Muszę sprawdzić, czy określony login już istnieje na serwerze SQL, a jeśli nie, to muszę go dodać.
Znalazłem następujący kod, aby faktycznie dodać login do bazy danych, ale chcę zawrzeć to w instrukcji IF (w jakiś sposób), aby sprawdzić, czy login istnieje jako pierwszy.
CREATE LOGIN [myUsername] WITH PASSWORD=N'myPassword',
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
Rozumiem, że muszę przeszukać bazę danych systemu, ale nie wiem, od czego zacząć!
sql-server
login
Brett Rigby
źródło
źródło
Odpowiedzi:
od tutaj
źródło
x] with password ''y'';\r\ndrop table foo;\r\n
CREATE LOGIN [@loginName] FROM ...
? Przepraszam za moją ignorancję, chciałbym się nauczyć ...QUOTENAME()
omija się@loginName
całe stwierdzenie, a nie całe stwierdzenie, a wtedy można pozbyć się instrukcji [i] ograniczników@loginName
.Oto sposób na zrobienie tego w programie SQL Server 2005 i nowszych wersjach bez korzystania z przestarzałego widoku syslogins:
Widok server_principals jest używany zamiast sql_logins, ponieważ ten drugi nie wyświetla logowań systemu Windows.
Jeśli chcesz sprawdzić istnienie użytkownika w określonej bazie danych przed ich utworzeniem, możesz to zrobić:
źródło
Jako drobny dodatek do tego wątku, generalnie chcesz uniknąć używania widoków rozpoczynających się od sys.sys *, ponieważ Microsoft uwzględnia je tylko w celu zachowania zgodności wstecznej. W swoim kodzie prawdopodobnie powinieneś użyć sys.server_principals. Zakładamy, że używasz SQL 2005 lub nowszego.
źródło
Możesz skorzystać z wbudowanej funkcji:
przez
lubić:
https://technet.microsoft.com/en-us/library/ms176042(v=sql.110).aspx
źródło
Spróbuj tego (zamień „user” na rzeczywistą nazwę logowania):
źródło
Działa to na SQL Server 2000.
w SQL 2005 zmień drugą linię na
Nie jestem pewien co do SQL 2008, ale przypuszczam, że będzie to to samo, co SQL 2005, a jeśli nie, to powinno dać ci wyobrażenie, gdzie zacząć szukać.
źródło
co dokładnie chcesz sprawdzić dla loginu lub użytkownika? login jest tworzony na poziomie serwera, a użytkownik jest tworzony na poziomie bazy danych, więc login jest unikalny na serwerze
również tworzony jest użytkownik na podstawie loginu, użytkownik bez loginu jest użytkownikiem osieroconym i nie jest przydatny, ponieważ nie można przeprowadzić logowania do serwera sql bez logowania
może tego potrzebujesz
sprawdź logowanie
powyższe zapytanie zwraca „X”, jeśli login istnieje, w przeciwnym razie zwraca wartość null
następnie utwórz login
tworzy to login na serwerze sql, ale akceptuje tylko silne hasła
utwórz użytkownika w każdej bazie danych, do której chcesz się zalogować
przypisać użytkownikowi prawa wykonywania
MUSISZ MIEĆ uprawnienia SYSADMIN lub w skrócie powiedzieć „sa”
możesz napisać dla tego procedurę sql w bazie danych
źródło
W celu rozwiązania konfliktu nazw między loginami, rolami, użytkownikami itp. Należy sprawdzić
type
kolumnę zgodnie z dokumentacją Microsoft sys.database_principalsAby obsłużyć specjalne znaki w nazwach użytkowników itp., Użyj odpowiednio
N'<name>'
i[<name>]
.Utwórz login
Utwórz użytkownika bazy danych
Utwórz rolę bazy danych
Dodaj użytkownika do roli
Przyznaj prawa roli
źródło
To jest dla Azure SQL:
Źródło: jak sprawdzić, czy użytkownik bazy danych już istnieje w Azure SQL Database
źródło
Najpierw musisz sprawdzić istnienie logowania za pomocą widoku syslogins:
Następnie musisz sprawdzić istnienie bazy danych:
źródło