Не удалось создать вход с помощью проверки подлинности Windows или SQL Server в стандарте SQL Server 2012

#sql-server

#sql-server

Вопрос:

Я получаю следующую ошибку каждый раз, когда пытаюсь создать логин (windows / sql) в SQL Server:

Запрос:

ИСПОЛЬЗУЙТЕ [master]

Вперед

СОЗДАЙТЕ ЛОГИН [домен имя входа] ИЗ WINDOWS С DEFAULT_DATABASE=[master]

Вперед

Ошибка:

Сообщение 8143, уровень 16, состояние 1, процедура sp_send_dbmail, строка 0 [Строка запуска пакета 2]
Параметр «@profile_name» был предоставлен несколько раз.

Я не могу понять, в чем может быть проблема. Любая помощь будет оценена.

Спасибо

Комментарии:

1. Это сообщение не имеет ничего общего с созданием a LOGIN ; создание входа в систему ничего не делает sp_send_dbmail с. Очевидно, что у вас есть плохо написанный триггер на вашем экземпляре, который вам нужно исправить. Если вы не понимаете предложение t, затем опубликуйте его DDL в вопросе (это ошибка сообщает вам о проблеме).

2. Предполагая, что вы не вызываете sp_send_dbmail себя, похоже, что кто-то написал триггер для захвата этого события, и этот триггер был сконструирован плохо. Проверьте в разделе триггеры базы данных / сервера.

3. ИСПОЛЬЗУЙТЕ [master], ЧТОБЫ СОЗДАТЬ ЛОГИН [domain loginname] ИЗ WINDOWS С DEFAULT_DATABASE= [master], Это то, что я запускаю. Я согласен с вами, возможно, это триггер. где я должен искать триггер.

4. where should I look for the trigger … В SSMS вы бы посмотрели в разделе [Yourdatabase] -> Программируемость -> Триггеры базы данных. Вероятно, для этого вы будете искать в главной базе данных. Триггеры также могут существовать в отдельных таблицах.

5. Скорее всего, это триггер сервера, а не базы данных, @ADyson .

Ответ №1:

Похоже, что ваша проблема заключается в том, что вы используете переменную, и она никогда не УСТАНАВЛИВАЕТСЯ снова. Я предлагаю вам использовать этот способ для создания учетных записей входа. Если вам нужно создать несколько учетных записей, вы можете использовать курсор или оператор while, который зацикливается на временной таблице, в которой вы сохранили учетные записи домена, которые хотите создать.

 SET QUOTED_IDENTIFIER OFF
go  
use master
go 

declare @domainuser SYSNAME
DECLARE @sqlCMD nvarchar(2000)
SET @domainuser = 'YourDomainUserName'

SET @sqlCMD = N'CREATE LOGIN ['  @domainuser  '] FROM WINDOWS WITH DEFAULT_DATABASE = [master];'

--PRINT @sqlCMD
EXEC (@sqlCMD)
GO