Мне нужно проверить, существует ли конкретный логин на SQL Server, а если нет, то мне нужно добавить его.
Я нашел следующий код, чтобы фактически добавить логин в базу данных, но я хочу обернуть это в оператор IF (каким-то образом), чтобы проверить, существует ли логин первым.
CREATE LOGIN [myUsername] WITH PASSWORD=N'myPassword',
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
Я понимаю, что мне нужно опросить системную базу данных, но не уверен, с чего начать!
sql-server
login
Бретт Ригби
источник
источник
Ответы:
От сюда
источник
x] with password ''y'';\r\ndrop table foo;\r\n
CREATE LOGIN [@loginName] FROM ...
? Прошу прощения за мое невежество, я хотел бы узнать ...QUOTENAME()
обойдется@loginName
, а не все утверждение, и тогда вы сможете избавиться от ручных [и] разделителей вокруг@loginName
.Вот способ сделать это в SQL Server 2005 и более поздних версиях без использования устаревшего представления системных журналов:
Представление server_principals используется вместо sql_logins, потому что последний не перечисляет имена входа Windows.
Если вам нужно проверить наличие пользователя в конкретной базе данных перед его созданием, то вы можете сделать это:
источник
Как незначительное дополнение к этой теме, в общем, вы хотите избегать использования представлений, начинающихся с sys.sys *, поскольку Microsoft включает их только для обратной совместимости. Для вашего кода вы, вероятно, должны использовать sys.server_principals. Это предполагает, что вы используете SQL 2005 или выше.
источник
Вы можете использовать встроенную функцию:
через
лайк:
https://technet.microsoft.com/en-us/library/ms176042(v=sql.110).aspx
источник
Попробуйте это (замените 'user' на фактическое имя пользователя):
источник
Это работает на SQL Server 2000.
в SQL 2005 измените вторую строку на
Я не уверен насчет SQL 2008, но я предполагаю, что он будет таким же, как SQL 2005, и если нет, это должно дать вам представление о том, с чего начать.
источник
что именно вы хотите проверить на логин или пользователя? логин создается на уровне сервера, а пользователь создается на уровне базы данных, поэтому логин уникален на сервере
Кроме того, пользователь создается против входа в систему, пользователь без входа в систему является осиротевшим пользователем и бесполезен, так как вы не можете выполнить вход в SQL Server без входа в систему.
может тебе это нужно
проверить логин
приведенный выше запрос возвращает 'X', если логин существует, иначе возвращает ноль
затем создайте логин
это создает логин в SQL Server. Но он принимает только надежные пароли
создать пользователя в каждой базе данных, которую вы хотите для входа в систему как
назначить пользователю права на выполнение
ВЫ ДОЛЖНЫ ИМЕТЬ разрешения SYSADMIN или кратко сказать «sa»
Вы можете написать процедуру SQL для этого в базе данных
источник
Чтобы избежать конфликта имен между логинами, ролями, пользователями и т. Д., Необходимо проверить
type
столбец в соответствии с документацией Microsoft sys.database_principals.Для обработки специальных глав в именах пользователей и т. Д. Используйте
N'<name>'
и[<name>]
соответственно.Создать логин
Создать базу данных пользователя
Создать роль базы данных
Добавить пользователя в роль
Предоставить права на роль
источник
Это для Azure SQL:
Источник. Как проверить, существует ли пользователь базы данных в базе данных SQL Azure.
источник
Сначала вы должны проверить существование логина, используя представление syslogins:
Затем вы должны проверить существование вашей базы данных:
источник