vasanthkumarmk Ответов: 2

Необходимо создать базу данных с использованием другого имени пользователя и пароля для проверки подлинности windows


Привет,

В настоящее время я подключил базу данных с помощью проверки подлинности windows (по умолчанию разрешить мои windows creds). Пример: Сервер/Пользователь1
Мне нужно создать базу данных, используя другие учетные данные windows. Пример: Сервер/Пользователь2
Новые права DBO базы данных должны быть Server/User2

Может помочь достичь этого сценария.

Дайте мне знать SQL-запрос по этому сценарию.

Объяснение сценария ниже:-
Шаг 1:
Клиент входит в систему, используя свое собственное имя пользователя и пароль (например:имя пользователя: System\User1).
Шаг 2:
Управлением в C# приложений Windows с расширением exe. Приложение, показывающее имя сервера БД, имя БД, логин, пароль.
Шаг 3:
Введите имя сервера базы данных Ex: (local)\SQLExpress
Введите имя базы данных, например, данных mydatabase
Введите имя пользователя базы данных Ex: System\DBAdmin
Введите пароль базы данных Ex: **********
Примечание:\dbadmin приведена в систему уже добавлен локальный вход SQL (безопасность -и GT; имя пользователя) с правами администратора.
Шаг 4:
Затем успешно следует создать базу данных для входа в систему (System\DBAdmin)

Ниже следует ожидать после создания базы данных:-
1. Перейдите в среду SQL Sever Management Studio
2. Подключение (локальное)\SQLExpress и проверка подлинности Windows
3. Разверните узел базы данных -и GT; данных mydatabase должны быть созданы
4. Нажмите кнопку MyDatabase и проверьте следующие вещи:-
Данных mydatabase -и GT; безопасность -> пользователи -&ГТ; ДБО-и gt; Общие -> тип -&пользователя gt; пользователя Windows
Данных mydatabase -и GT; безопасность -> пользователи -&ГТ; ДБО-и gt; Общие -> По имени-и логин и gt; Система\dbadmin приведена


С уважением,

Васант

Что я уже пробовал:

Я добавил пользователя под логином, попытался создать базу данных, но безуспешно.

ZurdoDev

Это не проблема с кодом, поэтому вы можете получить лучшие результаты на форуме технической поддержки, но все, что вам нужно сделать, это создать новый логин и пароль и назначить их БД. Это можно сделать в среде Sql Server Management Studio в папке Security.

vasanthkumarmk

Мне нужно сделать из запроса. Если я выйду из системы своего пользователя (User1) и войду к другому пользователю (User2) Я могу создать базу данных и БД прямо также соответствующего пользователя.
Но в моем случае подключена аутентификация windows в User1, но нужно создать базу данных для User2.

phil.o

Учетные данные управляются на уровне соединения, а не на уровне запроса. Вы не можете отправить запрос на изменение логина подключения.

2 Ответов

Рейтинг:
0

vasanthkumarmk

Спасибо... Я ищу, чтобы создать БД с помощью запроса. Мы можем создать базу данных, использующую Запуск от имени другого пользователя в SSMS.

Рейтинг:
0

CHill60

Похоже, вы пытаетесь это сделать CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) - SQL Server | Microsoft Docs[^] или Создание учетных данных (Transact-SQL) - SQL Server | Microsoft Docs[^]

Единственный способ создать базу данных, "используя" другие учетные данные windows, - это войти в систему с этими учетными данными. Я подозреваю, что это просто терминологическая проблема, и вы пытаетесь изменить владельца базы данных - взгляните на Как изменить владельца базы данных в SQL SERVER? [^]


vasanthkumarmk

Спасибо, но не повезло.

CHill60

Вместо того чтобы просто сказать "не повезло", не могли бы вы рассказать нам конкретно, что вы сделали и что произошло?

vasanthkumarmk

Используйте мастер
ГО
\\SERVER\Login1-это моя учетная запись входа в систему windows по умолчанию
Грант подменить логин:: [Имя_входа1\сервер] для [сервер\пользователь с именем имя_входа2]
ГО
СОЗДАНИЕ БАЗЫ ДАННЫХ TESTING9
ГО

Я хотел бы ожидать создание базы данных TESTING9 для использования учетной записи [сервер\пользователь с именем имя_входа2]. Так TESTING9 -и GT; безопасность -> пользователи -&ГТ; ДБО-и GT; имя пользователя -&ГТ; должна быть '[сервер\пользователь с именем имя_входа2]'

CHill60

Я не уверен, почему вы ожидаете, что create database сделает все это без дополнительных шагов по смене владельца... пробовать

ALTER AUTHORIZATION ON DATABASE::TESTING9 TO Login2;

vasanthkumarmk

Извините за путаницу. Ниже я объясню, чего ожидает клиент:-
Тема: создание базы данных (проверка подлинности Windows) с помощью другого входа в систему Active directory.
Пояснение: представьте себе сотрудников, использующих несколько систем в офисе, у которых есть один администратор БД, администратор БД имеет только права на установку базы данных для всех сотрудников в офисе. Таким образом, администратор БД уже добавил определенные разрешения для всех машин сотрудников (Security -> Logins -> Server/DBadmin) (также добавлено разрешение ролей сервера как sysadmin).
Затем администратор БД дал один конкретный идентификатор пользователя windows active directory (Server/DBadmin) и пароль (******) для всех сотрудников для установки базы данных. Сотрудники, использующие одно приложение c# windows, предоставляющее имя пользователя администратора БД, пароль, имя сервера, имя базы данных, затем оно создаст базу данных (аутентификация Windows). Поэтому, как только создали базу данных, то база данных должна быть TESTING9 -и GT; безопасность -> пользователи -&ГТ; ДБО-и GT; имя пользователя -&ГТ; должна быть '[сервер/dbadmin приведена в]'

---- Это мое ожидание.------

Я пытаюсь олицетворить пользователя перед созданием базы данных с помощью SQL-запроса. Но ничего не добился.

CHill60

Поэтому измените владельца базы данных после ее создания. Вы не можете "использовать чужой логин Active directory", если только не имеете в виду, что пытаетесь это сделать EXECUTE AS (Transact-SQL) - SQL Server | Microsoft Docs[^].

Это также звучит так, как будто вы создаете множество баз данных на компьютере каждого пользователя - это странный способ идти о вещах - большинство приложений подключаются к центральной базе данных, если не работает отключено.

Но в целом - как только база данных будет создана, вы можете установить любой логин в качестве владельца - просто запустите sql-команду, которую я дал вам ранее (alter authorization ...) с соответствующим именем базы данных и логином, который вы хотите быть владельцем

vasanthkumarmk

Большое вам спасибо за ваше предложение.

Но в соответствии с моим требованием я не мог создать базу данных в текущем логине пользователя. Только другой вход в систему Active directory только я должен создать базу данных.
Таким образом, изменение собственности не представляется возможным. Не могли бы вы помочь мне с помощью EXECUTE AS создать базу данных для входа других пользователей.

Он подключен только к центральной базе данных.

Еще раз большое вам спасибо за ваш ответ. Я пробовал на пути, который вы предлагаете.
Пожалуйста, продолжайте помогать... Спасибо!!!!!

vasanthkumarmk

Используйте мастер
ГО
Выберите SUSER_NAME() в качестве имени входа,
USER_NAME () в качестве имени пользователя
ГО
Выполнить как LOGIN = 'SERVER\User2'
ГО
Создание базы данных ImpersonateDB
ГО
Выберите SUSER_NAME() в качестве имени входа,
USER_NAME () в качестве имени пользователя

Ошибка = не удалось получить информацию о группе Windows NT/пользователе 'SERVER\User2', код ошибки 0x5.

CHill60

У меня есть это право?
Итак, вы создаете центральную базу данных - все остальные подключатся к ней один база данных.
Ваш логин не может создать базу данных, но вы знаете детали входа в систему, которые могут это сделать.
Почему бы не подключиться к SQL server с помощью входа в систему, который мочь создать базу данных и просто создать ее?

Вам действительно нужно описать сценарий шаг за шагом и не использовать "я" в описании - используйте имена входа в систему. И было бы лучше, если бы вы использовали ссылку "улучшить вопрос", чтобы больше людей могли видеть детали, не проходя через все эти комментарии

vasanthkumarmk

Спасибо..... отредактированный и улучшенный вопрос

CHill60

Это хорошее описание. В данный момент я нахожусь на своем телефоне, поэтому не могу по-настоящему разобраться в этом прямо сейчас, но надеюсь, что другие члены клуба увидят поправку и вмешаются, чтобы помочь. Я вернусь, когда смогу.

vasanthkumarmk

Конечно... Огромное спасибо.... Рад вашему ответу....