Tilføjelse af en bruger til ms sql server. SQL Server Script til at oprette en ny bruger

5 svar

Baseret på dit spørgsmål, tror jeg, du kan være lidt forvirret over forskellen mellem bruger og login. Et login er en konto på SQL Server generelt - en person, der kan logge ind på serveren, og som har en adgangskode. En bruger er en input med adgang til en bestemt database.

Det er nemt at oprette et login og bør (naturligvis) gøres, før du opretter en brugerkonto for at logge ind på en bestemt database:

OPRET LOGIN NewAdminName MED PASSWORD = "ABCD" GO

Sådan opretter du en bruger med db_owner-rettigheder ved at bruge det login, du lige har erklæret:

Brug YourDatabase; GÅ HVIS IKKE FINDER (VÆLG * FRA sys.database_principals WHERE name = N"NewAdminName") BEGYND OPRET BRUGER TIL LOGIN EXEC sp_addrolemember N"db_owner", N"NewAdminName" END; GÅ

Nu er logins lidt mere flydende, end jeg ser ud til at være ovenfor. For eksempel oprettes der automatisk en brugerkonto (i de fleste SQL Server-installationer) til Windows Administrator-kontoen, når databasen er installeret. I de fleste situationer bruger jeg bare dette, når jeg administrerer databasen (den har alle privilegier).

Men hvis du skal tilgå SQL Server fra en applikation, skal du konfigurere serveren til "Mixed Mode" (både Windows og SQL Login) og oprette et Login som vist ovenfor. Du vil derefter modtage "GRANT"-rettigheder for det SQL-input baseret på, hvad der er nødvendigt for din applikation. Se for mere information.

OPDATERING: Aaron påpeger at bruge sp_addsrvrolemember til at tildele en klargjort rolle til din konto. Dette er en god idé - hurtigere og nemmere end at give privilegier manuelt. Hvis du finder det, vil du se mange links. Du bør dog stadig forstå forskellen mellem et login og en bruger.

Fuld administratorrettigheder for hele serveren eller en specifik database? Jeg tror, ​​de andre svarede for databasen, men for serveren:

BRUG ; GÅ OPRET LOGIN MyNewAdminUser MED PASSWORD = N"abcd", CHECK_POLICY = FRA, CHECK_EXPIRATION = FRA; GO EXEC sp_addsrvrolemember @loginame = N"MyNewAdminUser", @rolename = N"sysadmin";

Du skal muligvis udelade CHECK_-parametrene afhængigt af hvilken version af SQL Server Express du bruger (det er næsten altid en god idé at inkludere disse oplysninger i dit spørgsmål).

Hvis du vil oprette et generisk script, kan du gøre det med en Execute-sætning, der erstatter med dit brugernavn og databasenavn

Erklær @brugernavn som varchar(50); Erklær @defaultDataBaseName som varchar(50); Erklær @LoginCreationScript som varchar(max); Erklær @UserCreationScript som varchar(max); Erklær @TempUserCreationScript som varchar(max); sæt @defaultDataBaseName = "data1"; set @brugernavn = "domæne\brugernavn"; sæt @LoginCreationScript ="OPRET LOGIN [(brugernavn)] FRA WINDOWS MED DEFAULT_DATABASE =(dataBaseName)" sæt @UserCreationScript =" BRUG (dataBaseName) OPRET bruger [(brugernavn)] til LOGIN [(brugernavn)]; EXEC spp_addrole_reader "", ""(brugernavn)""; EXEC sp_addrolemember ""db_datawriter"", ""(brugernavn)""; Giv Execute on Schema:: dbo TO [(brugernavn)];" /*Login-oprettelse*/ sæt @LoginCreationScript=Erstat(Erstat(@LoginCreationScript, "(brugernavn)", @brugernavn), "(dataBaseName)", @defaultDataBaseName) sæt @UserCreationScript =Erstat(@UserCreationScript, "(brugernavn)" , @brugernavn) Execute(@LoginCreationScript) /*Brugeroprettelse og rolletildeling*/ sæt @TempUserCreationScript =Replace(@UserCreationScript, "(dataBaseName)", @defaultDataBaseName) Execute(@TempUserCreationScripterCreationCreationCreplaceC@TempUserCreationScripterCreplaceC@TempUserCreationScripterCreplace "(dataBaseName)", "db2") Execute(@TempUserCreationScript) set @TempUserCreationScript =Replace(@UserCreationScript, "(dataBaseName)", "db3") Execute(@TempUserCreationScript)

Du kan bruge:

OPRET LOGIN MED ADGANGSKODE = " " ; GÅ

Du kan også bruge:

GIV tilladelse [ ,...n ] PÅ SCHEMA:: skemanavn

For at konfigurere tilladelser til det skema, du har tildelt brugere.

I sidste uge installerede jeg Microsoft SQL Server 2014 Developer Edition på min dev-side og stødte straks på et problem, som jeg aldrig har set før.

Jeg har installeret forskellige versioner af SQL Server utallige gange, og det er normalt en smertefri proces. Installer serveren, start administrationskonsollen, så enkelt er det. Men efter at have fuldført denne installation, da jeg forsøgte at logge ind på serveren ved hjælp af SSMS, fik jeg en fejl svarende til nedenstående:

SQL Server Login Error 18456 "Login mislykkedes for bruger... (Microsoft SQL Server, fejl: 18456)" Jeg har brugt denne fejl, hvis jeg indtastede den forkerte adgangskode, da jeg loggede ind - men det er kun, hvis jeg bruger blandet tilstand ( Windows og SQL-godkendelse). I dette tilfælde var serveren kun konfigureret med Windows-godkendelse, og brugerkontoen var min. Jeg er stadig ikke sikker på, hvorfor det ikke føjede min bruger til SYSADMIN-rollen under installationen; måske gik jeg glip af et trin og glemte at tilføje det. I hvert fald var ikke alt håb ude.

Måden at løse dette på, hvis du ikke er i stand til at logge ind med en anden konto på SQL Server, er at tilføje netværkslogin via CLI. For at gøre dette skal du være Windows-administrator for den pc, du er logget på.

Stop MSSQL-tjenesten. Åbn en kommandoprompt ved hjælp af kommandoen Kør som administrator. Gå til mappen, hvor SQL Server EXE-filen er gemt; Standarden for SQL Server 2014 er "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn". Kør følgende kommando: "sqlservr.exe -m". Dette vil starte SQL Server i enkeltbrugertilstand. Når du har afsluttet den kommandoprompt, skal du åbne en anden, gentage trin 2 og 3. I det andet kommandopromptvindue skal du køre "SQLCMD -S Server_Name\Instance_Name" I det vindue skal du køre følgende linjer og trykke på Enter efter hver enkelt: 1

OPRET LOGIN [domænenavn\brugernavn] FRA WINDOWS 2 GO 3 SP_ADDSRVROLEMBER "LOGIN_NAME", "SYSADMIN" 4 GO Brug CTRL + C til at afslutte begge processer i kommandopromptvinduer; du bliver bedt om at trykke på Y for at afslutte SQL Server-processen.

Genstart MSSQL-tjenesten. Dette er det! Du kan nu logge ind med dit online login.

I årtier har det været muligt at definere brugerroller i databaser for at hjælpe med at styre processen med at give databaseadgangstilladelser, men på instansniveau har der altid været ni faste roller (eller otte, hvis du bruger en version før SQL Server 2000 - bulkadmin-rollen blev introduceret i SQL Server 2005). Nu, med fremkomsten af ​​SQL Server 2012, er det endelig muligt at oprette brugerdefinerede eller brugerdefinerede serverroller.

I årevis har manglen på tilgængelighed af denne funktionalitet været en kilde til hovedpine for SQL Server-administratorer. Hvad ville du gøre, hvis du havde brug for at give rettigheder til flere brugere eller grupper på instansniveau og holde disse rettigheder synkroniseret? Lad os sige, at du ønsker at give View System State-rettighederne til et stort antal brugere, så de kan se låseoplysninger i udviklingscentre. Det var nødvendigt at tildele rettigheder individuelt til hver bruger eller domænegruppe.

Hvis alle logins var domænelogin, var der en løsning: du kunne oprette en domænegruppe for at inkludere alle brugere, der havde brug for sådanne rettigheder (du skulle oprette separate grupper for hver server, hvis du skulle tildele rettigheder på flere servere). Du kan tilføje brugere til denne gruppe, oprette et login knyttet til denne domænegruppe og derefter give gruppen View Server State direkte på serveren. Men dette skulle gøres meget omhyggeligt. Ellers var det muligt at give login-rettigheder til brugere, der ikke tidligere havde sådanne rettigheder. Det var endda muligt at give brugere rettigheder, som de ikke skulle tildeles.

Oprettelse af en rolle ved hjælp af T/SQL

Der er mange måder at oprette en tilpasset rolle på en server, herunder ved at bruge T/SQL, SQL Server Management Studio og Windows PowerShell. Hvis du vil oprette en brugerdefineret serverrolle ved hjælp af T/SQL, skal du bruge tre kommandoer: Opret serverrolle-sætningen vil oprette den tilpassede serverrolle, Alter Server-rolle-sætningen tilføjer brugeren til rollen, og endelig Bevillingserklæring vil give de nødvendige rettigheder til rollen.

Brugen af ​​disse tre sætninger er illustreret i følgende kode, som opretter en tilpasset serverrolle ved navn ViewServerState. Brugeren SomeFakeLogin føjes til rollen, og rollen tildeles rettigheden View Server State. For at give denne ret til andre brugere skal du blot tilføje dem til en færdiglavet rolle ved hjælp af Alter Server Role-sætningen.

BRUG GÅ OPRET SERVER ROLLE GODKENDELSE GÅ ÆNDRE SERVER ROLLE TILFØJ MEDLEM GÅ TILDEL SE SERVERSTAT FOR AT GÅ

For at fjerne en bruger fra en rolle skal du bruge Alter Server Role-sætningen. I dette tilfælde bruges parametrene Tilføj medlem og Slip medlem:

ALTER SERVER ROLLE DROP MEDLEM GÅ

Når du har brug for at implementere en eller flere brugerdefinerede serverroller på tværs af mange forekomster af SQL Server, er der flere muligheder tilgængelige. Du vil sandsynligvis ikke lide at oprette forbindelse til hver server individuelt og oprette tilpassede serverroller på dem. En mulighed er at bruge SQL Server Management Studio-konsollen. Det giver dig mulighed for at køre T/SQL-scripts på flere instanser på én gang.

Du kan også bruge SQL Server Windows PowerShell-komponenter til at implementere nye tilpassede serverroller til alle forekomster af SQL Server i din organisation. (Der er mange muligheder for at bruge Windows PowerShell til at udføre denne opgave, men de er uden for denne artikels omfang.)

SQL Server Management Studio Console

Opgaven kan nemt udføres ved hjælp af SQL Server Management Studio GUI. For at oprette en tilpasset serverrolle skal du oprette forbindelse til forekomsten ved hjælp af Object Explorer. I Objekt Explorer skal du navigere til noden<instansnavn>>Sikkerhed/serverroller. Højreklik på Serverroller og vælg Ny serverrolle. I vinduet Ny serverrolle, der åbnes, skal du i feltet Serverrollenavn angive navnet på rollen, i feltet Ejer angive ejeren af ​​rollen, og derefter angive de objekter og tilladelser, der skal gives til medlemmer af rolle ( ris. 1).

Ris. 1. Angiv de rettigheder, som rollen skal give

Når du er færdig på siden Generelt, skal du gå til siden Medlemmer ( ris. 2) og angiv de SQL Server-logins, der skal være en del af denne tilpassede serverrolle.

Ris. 2. Definition af rollemedlemmer

Efter at have defineret rollemedlemmer på siden Medlemmer, skal du gå til siden Medlemskaber. Dette angiver de serverroller, som den tilpassede serverrolle skal være medlem af. Hvis du vælger en rolle på denne side, vil brugere, der er medlemmer af den tilpassede serverrolle, som du opretter, også have rettighederne til den valgte rolle.

Hvis du opretter en tilpasset rolle og gør den til medlem af serveradmins faste serverrolle ( ris. 3), vil alle medlemmer af den nyoprettede brugerrolle også have serveradmin-rollerettigheder. Som med indlejrede domænegrupper eller databaseroller, skal man være meget forsigtig, når man indlejrer roller for at undgå at give brugere rettigheder, som de ikke burde have.

Ris. 3. Tilpassede roller kan inkluderes i andre serverroller

For at organisere indlejring af roller ved hjælp af T/SQL skal du igen bruge Alter Server Role-sætningen med Add Member-parameteren. For at gøre den tilpassede serverrolle ViewServerState til et medlem af den faste serverrolle setupadmin, skal du for eksempel redigere den faste serverrolle for setupadmin.

ALTER SERVER ROLLE TILFØJ MEDLEM GÅ

Tilpassede serverroller kan have mange brugere. Der er snesevis af rettigheder på instansniveau, der kan tildeles en tilpasset serverrolle for at gøre det nemmere at administrere disse rettigheder. Du kan også oprette en rolle for en junior DBA, som tildeles nogle, men ikke alle, administratorrettigheder. Du kan oprette en AlwaysOnAdmin-gruppe, der giver ret til at udføre en AlwaysOn-databaseovergang (som skal udføres i SQL Server) uden at give fulde administrative rettigheder.

Der er mange situationer, hvor tilpassede serverroller er meget nyttige. De vil i høj grad lette administratorens arbejde. Disse grupper hjælper også med at forbedre sikkerheden for dine SQL Server-instanser ved at reducere sandsynligheden for ved et uheld tildeler brugerrettigheder, som ikke bør tildeles.

  • Tutorial

Introduktion

Efter at have skiftet arbejdsstation begyndte jeg at installere på den Microrosft SQL Server 2008 R2 og stødte næsten på den traditionelle rake forbundet med forbedret sikkerhed i denne version. Hvis i Microsoft SQL Server 2005 Den lokale administratorgruppe var inkluderet i sysadmin-rollen på SQL-serveren som standard, men i 2008 er ingen inkluderet i denne rolle:

Som følge heraf resulterer standardinstallationen i en situation, hvor ingen har administrativ adgang til instansen, det vil sige, at der ikke kan gøres noget med denne instans udover at genstarte den med jævne mellemrum. Også denne situation opstår, når den, der installerede SQL-serveren, efter at have udpeget sig selv som den eneste administrator, afslutter - for eksempel opstod denne situation med vores administratorer.
Dette indlæg viser løsningen på dette problem og giver en automatiseret løsning på dette problem i form af et manuskript, ligesom det fortæller historien om dets forfatterskab, der illustrerer kraften i WMI, som er uacceptabelt dæmpet i litteraturen og på Internet.

Beskrivelse af proceduren

Der er intet uventet eller revolutionerende i løsningen:
  1. Genstart forekomsten i enkeltbrugertilstand
  2. Tilføj den ønskede bruger til serveradministratorerne fra enhver bruger fra den lokale administratorgruppe
  3. Genstart forekomsten til normal tilstand

Tygget beskrivelse af proceduren

Genstart i enkeltbrugertilstand

Indstilling af administratorrettigheder for en bruger
Der er mange måder, lige fra at blive medlem af serveren via SQL Server Management Studio og bruge grafisk udstyr til at tilføje de nødvendige rettigheder og slutte med brugen osql. Vi vil gå den anden vej. Lad os starte cmd.exe under en bruger fra den lokale administratorgruppe og udfør følgende kommando:
osql -E -S .\InstanceName -Q "EXEC sp_addsrvrolemember "DOM\User", "sysadmin"" , hvor Forekomstnavn- navnet på instansen, og DOM\Bruger- dette er domænet\brugeren, der får administrativ adgang til instansen. I mit tilfælde (med standardinstansen og for admin-brugeren RU\venticello) det ser sådan ud:

Starter forekomsten i normal tilstand
Lad os gå i omvendt rækkefølge:
  1. Stopper instansen
  2. Fjernelse af parameteren -m;
  3. Lancering af instansen
Det er alt!

Automatisering

Selvom proceduren ikke er ekstremt kompliceret og på ingen måde er hverdagskost, er den, for at være ærlig, lidt kedelig og trættende. Det store antal skærmbilleder er et bevis på dette. Jeg er en overbevist apologet for udtalelsen om, at alt, der er kedeligt, skal gøres af en computer og ikke af en person - det er derfor, de blev skabt. Derfor tog og beskrev jeg alle disse trin i form af et manuskript, som bliver tilbudt din opmærksomhed. For at bruge scriptet skal det køres som en bruger med administrative rettigheder på maskinen med instansen som følger:
cscript /nologo acquire_admin_rights.js [ ] , hvor er en valgfri parameter instansnavn angiver den instans, som den startende bruger skal tildeles administratorrettigheder til. Hvis du springer en forekomst over eller angiver et navn MSSQLSERVER, vil der blive givet adgang til standardforekomsten. Endnu en gang minder jeg dig om at sørge for, at der ikke er nogen programmer, der aktivt forbinder til denne instans under proceduren, da de kan kapre den eneste forbindelse, der leveres af enkeltbrugertilstand.
Under driften taler scriptet ærligt om dets handlinger, så hvis noget går galt, kan du forstå, hvad årsagen er, og i hvilken tilstand systemet er tilbage:

Script detaljer

Da jeg begyndte at skrive scriptet, havde jeg allerede en del erfaring med at arbejde med SQL Server-konfiguration via WMI, men jeg behøvede ikke at arbejde med instansens startkommandolinjeparametre. Det er på denne måde, jeg vil fortælle historien: hvad jeg vidste, og hvordan jeg ledte efter det, jeg havde brug for.
WMI
Kort sagt, i forbindelse med vores historie, er WMI (Windows Management Instrumentation) en Windows-tjeneste, der giver adgang til konfigurationsoplysninger i en samlet form af navngivne klasser repræsenteret af et sæt egenskaber. Klasser er fyldt ind i navneområder (hvoraf den mest populære er root\cimv2, hvor de fleste af de klasser, der beskriver systemet, bor, og root\default, hvor registerklassen bor). Baseret på en klasse kan der være en eller flere instanser, der repræsenterer de faktiske objekter, der beskrives. For eksempel er Win32_Service-klassen et servicekoncept, og hver instans er et sæt egenskaber, der svarer til de faktiske tjenester, der er installeret på systemet.
Microsoft SQL Server i WMI
Her var der, som næsten altid hos Microsoft, nogle knæk. Selvom SQL-serverne selv giver bagudkompatibilitet, er der noget galt med dem på konfigurationsniveauet, så absolut ens konfigurationsklasser lever i to forskellige navnerum:
  • root\Microsoft\SqlServer\ComputerManagement - til SQL Server 2005
  • root\Microsoft\SqlServer\ComputerManagement10 - til SQL Server 2008
Derfor skal vi i det generelle tilfælde lede efter vores instans i to navneområder - hvad nu hvis de vil konfigurere en femte server med vores script?
Så vi kender navnerummet for de nødvendige klasser, men hvad hedder de, og hvordan arbejder man med dem? Her kommer et ret klodset, men kraftfuldt værktøj til vores undsætning - wbemtest.
wbemtest
wbemtest.exe er en standard WMI-klient (så standard, at den er til stede i stierne), der er leveret med WMI siden de første dage af denne tjenestes optræden i Windows 2000. Som følge heraf er grænsefladen til dette værktøj barsk, hvilket dog , forringer ikke dens magt. Det ser sådan ud:


Indtil vi tilslutter os det nødvendige navneområde, er der ikke noget særligt for os at gøre i dette værktøj. Heldigvis kender vi det navneområde, vi har brug for: root\Microsoft\SqlServer\ComputerManagement10:

Hvis alt er fint med WMI (og denne tjeneste har en tendens til at falde af lejlighedsvis), så vil forbindelsen være vellykket, hvilket inviterer os til at interagere med aktive knapper:


Det er det, nu er vi klar til at dykke ned i navneområdet i jagten på de nødvendige klasser og egenskaber.
Find de egenskaber, du har brug for
Lad os først se på, hvilke klasser der findes i dette navneområde. For at gøre dette skal du naturligvis klikke på knappen Enum klasser og i den ikke helt klare dialog, der vises, skal du klikke på OK. Som et resultat vises følgende vindue:

.
Den sædvanlige kvindelige intuition fortæller os, at dette højst sandsynligt er en klasse SqlServiceAdvancedProperty. Dobbeltklik for at åbne følgende dialogboks, der viser egenskaberne for denne klasse:


Det ser ud til, at det er sandt. Lad os se på forekomster af denne klasse og se, om de parametre, vi er interesserede i, er der. For at gøre dette skal du trykke på knappen Forekomster og vi får dette vindue:


At finde et objekt SqlServiceAdvancedProperty.PropertyIndex=13,SqlServiceType=1,PropertyName="STARTUPPARAMETERS",ServiceName="MSSQLSERVER". Det her er lykke!
Arbejde med WMI fra et script
Når vi ved, hvilke klasser og egenskaber vi har brug for, er der kun tilbage at få adgang til dem fra scriptet. Vi vil overveje JScript, fordi det er distribueret med alle Windows, og endda JavaScript. At arbejde i VBScript eller PowerShell er lignende. Arbejdet med WMI i et script begynder, som i tilfældet med wbemtest, med at oprette forbindelse til det ønskede navneområde. Dette gøres med følgende kode:
funktion LookupInstanceContext(instans, omfang) ( prøv ( var wmi = GetObject("WINMGMTS:\\\\.\\root\\Microsoft\\SqlServer\\" + omfang); var settings = new Enumerator(wmi.ExecQuery(" SELECT * FROM ServerSettings WHERE InstanceName="" + instance + """)); if (!settings.atEnd()) ( return wmi; ) ) catch (exception) () return null; ) Omfanget er enten "ComputerManagement " eller "ComputerManagement10", alt efter hvilken version af SQL Server vi leder efter. Med omtrent den samme kode slutter vi os til navnerummet root\cimv2, hvorigennem vi arbejder med services. Det resulterende wmi-objekt implementerer IWbemServices-grænsefladen, men vi er interesserede i følgende tre metoder:
  • ExecQuery - kør en forespørgsel i WQL og returner en liste over resultater
  • Hent - få en specifik forekomst af en klasse efter identifikator
  • ExecMethod - kald en metode på et objekt
For at øve din evne til at lave WQL-forespørgsler og se på resultaterne, hjælper vores gamle ven wbemtest os med et klik på en knap Forespørgsel... på hovedvinduet. Kort sagt er WQL (WMI Query Language) en delmængde af SQL, hvor klassenavnet bruges som en tabel, og du kan ikke vælge specifikke kolonner - kun SELECT * . For at finde alle forekomster af en serverforekomst ved navn MSSQLSERVER kan du f.eks. skrive følgende WQL-forespørgsel:


Resultatet præsenteres i samme form, som klasseforekomsterne blev returneret til os (dette var resultatet af SELECT * FROM SqlServiceAdvancedProperty-forespørgslen).
For at få et enkelt objekt ved dets primære nøgle eller et komplet sæt egenskaber (for klasser, der ikke har primære nøgler), skal du bruge Get-metoden. Her er funktionen, der er ansvarlig for at hente strengværdien af ​​SqlServiceAdvancedProperty-objektet på den givne sti:
funktion GetPropertyValue(wmi, sti) ( return wmi.Get(path).PropertyStrValue; ) Ændring af værdien af ​​en egenskab involverer at kalde metoden SetStringValue (som er angivet i beskrivelsen af ​​klassen SqlServiceAdvancedProperty). For at kalde det, skal du først oprette dets argument og indstille det til den krævede værdi. Dette gøres med følgende batch af opkald:
funktion SetPropertyValue(wmi, sti, værdi) (var arg = wmi.Get(path).Methods_("SetStringValue").inParameters.SpawnInstance_(); arg.Properties_.Item("StrValue") = værdi; var resultat = wmi .ExecMethod(sti, "SetStringValue", arg); if (result.ReturnValue != 0) ( throw new Error("Kunnede ikke indstille egenskaben "" + sti + "" til værdien "" + værdi + """ ); ) )

Bemærk, skal alle de beskrevne handlinger udføres på serveren med rettighederne Administrator. Hvis du ikke har fysisk adgang til serveren ( SQL Server), eller fjernadgang til skrivebordet, eller dine kontotilladelser tillader dig ikke at administrere brugere, herunder oprettelse af nye brugere, så vil du ikke være i stand til at løse det problem, der diskuteres her, på egen hånd. Hvis ja, kontakt din systemadministrator for at få hjælp.

Hvis du har almindelig virtuel hosting, så uden at kontakte den tekniske support fra dit hostingfirma, vil du ikke være i stand til selvstændigt at administrere brugerne af din database.

Løb Microsoft SQL Server Management Studio og opret forbindelse til serveren.

På listen "Objektbrowser"(hvis ikke vist, tryk på F8) åbn mappen "Sikkerhed". Højreklik på mappen "Loginnavne", vælg i menuen, der vises "Opret login...".

I det vindue, der vises, i feltet "Login-navn" indtast dit login. For eksempel: "yolper" (uden citater). Vælg derefter din godkendelsestype. Standardværdien er "Windows-godkendelse", betyder det, at når den er tilsluttet SQL Server konto vil blive brugt Windows. Som regel bruges denne metode ikke på fjernservere. Vælg "SQL-servergodkendelse". I kapitel "Adgangskode", indtast en hvilken som helst adgangskode, og vigtigst af alt skriv den ned, så den kan videregives til brugeren senere. Hvis adgangskoden går tabt, kan den til enhver tid ændres.

Sørg for at lade indstillingen være aktiveret "Kræv brug af en adgangskodepolitik". Andre muligheder: "Indstil adgangskodebegrænsningsperiode" Og "Brugeren skal ændre deres adgangskode, næste gang de logger ind", brug efter eget skøn, men de er normalt deaktiveret for ikke at skabe unødvendige problemer, når du opretter forbindelse til serveren.

I samme vindue, helt nederst, vælg standard database. Det er denne database, der åbnes, efter at brugeren opretter forbindelse til serveren. Klik "Okay" for at oprette en konto.


Kontoen er oprettet, men det er ikke alt. Nu skal du linke kontoen til tabellerne. Faktisk kunne dette gøres, når du opretter en konto, men i skrivende stund, denne hjælper, SQL Server 2008 Af en eller anden grund nægtede jeg at huske forbindelsen mellem den konto, der blev oprettet, og tabellerne (i 2005 ingen sådan fejl blev observeret).

For at knytte en konto til bestemte tabeller og definere brugerrettigheder skal du udvide mappen "Loginnavne" i objektbrowseren. Find den oprettede konto på listen og højreklik på den, vælg menu "Ejendomme".


Gå til afsnittet i vinduet, der vises "Brugerkortlægning". I den øverste liste skal du vælge de tabeller, der kan arbejdes med ved brug af denne konto. Vælg rettigheder fra den nederste liste. Normalt nok "db_ejer".


Klik derefter på knappen "Okay". Nu kan du bruge den oprettede konto til at få adgang SQL Server.

Når du implementerer baseret på 1C-løsninger i klient-server-tilstand ved hjælp af MS SQL DBMS, er det nogle gange nødvendigt, at forskellige databaser oprettes på vegne af forskellige brugere. De der. Nogle gange har vi brug for at oprette en anden bruger end sa i SQL Management Studio og indtaste hans data i felterne i vinduet for at tilføje en ny informationssikkerhed. (Fig.1.)

Hvad er minimumsrettighederne, som alt dette vil fungere under?

ITS metodologiske støttematerialer siger, at "denne bruger skal ikke kun have fulde rettigheder til infobasedatabasen, men også rettigheder til at oprette databaser i SQL-serveren og til at læse masterdatabasetabeller." For at se, hvordan dette fungerer i praksis, vil vi gennemføre en testinstallation af informationssikkerhed i en klient-server version ved hjælp af MS SQL Server 2008 R2 Express. Du kan selvfølgelig dumt kopiere sa-brugerens parametre, men lad os gøre det meningsfuldt, det er altid nyttigt.

Lad os starte SQL Management Studio 2008 R2-miljøet, etablere en forbindelse til SQL-serveren og åbne sektionen Sikkerhed->Login og vælge kontekstmenukommandoen "Opret login", indstil brugernavnet og indstil rettighederne dbcreator, offentlig(Fig.2)

På brugeregenskabssiden "User Mapping" skal du markere afkrydsningsfeltet "Skema" for alle baser i tabellen over kortlagte brugere master, model, msdb, tempdb, og for hver database fra tabellen noterer vi rollemedlemskabet offentlig, db_ejer(Fig.3)

Nu kan du vende tilbage til vinduet vist i fig. 1 og anvend de indtastede parametre. Klik Yderligere-> Parat og... databasen er blevet oprettet, listen over databaser er steget med én position.

Således vil vi være i stand til at behage og berolige systemadministratoren, fordi den angivne kombination af MS SQL-brugerrettigheder er minimalt tilstrækkelig til brug med 1C-platformen i klient-server-tilstand, og "sa"-adgangskoden forbliver kompromisløs, og vi har de MS SQL-brugerrettigheder, vi har brug for.