Установите Sql в однопользовательский режим с C# и создайте пользователя-администратора - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть c# приложение winform, которое подключается к базе данных и читает данные. Эта база данных также используется другим приложением. Я только что выполнил запрос из своего приложения, чтобы прочитать некоторые данные.

У меня нет пользователя и пароля базы данных.

Так что я должен изменить службу sql на одного пользователя В ручном режиме: добавьте параметр -m к службе sql, а затем перезапустите службу и, поскольку у меня есть пароль локального администратора. Я могу войти с помощью windows, создать пользователя и установить для него команду sysadmin roll.

Теперь я хочу выполнить всю эту программируемость на c#

Есть ли способ создать пользователя sysadmin на sql с помощью windows пароля локального администратора с помощью команды sql?

1 Ответ

0 голосов
/ 01 мая 2020

Я смог это сделать

сначала создать пакетный пример файла test.bat и установить код в

@ECHO OFF
ECHO Please Wait....
NET STOP MSSQLSERVER
NET START MSSQLSERVER /m"SQLCMD"
sqlcmd -s . -E -i query.sql
NET STOP MSSQLSERVER
NET START MSSQLSERVER

первая остановка sql сервер

и запуск -m параметр для запуска однопользовательского режима

«SQLCMD» подключается только из командной строки в однопользовательском режиме

после запуска однопользовательского режима выполнить запрос. sql

- с. адрес сервера здесь мой локальный

-e connect windows аутентификация

-i sql запрос на выполнение

запрос. sql:

use mydatabase
Go
IF  EXISTS (SELECT * FROM sys.server_principals  WHERE name = N'newuser') DROP login [newuser]
Go
create LOGIN newuser WITH PASSWORD = '123456',CHECK_POLICY = OFF,CHECK_EXPIRATION = OFF ;
Go
EXEC master..sp_addsrvrolemember @loginame = N'newuser', @rolename = N'sysadmin'
Go

в sql запрос сначала проверяет, существует ли newuser drop, затем создает с ролью sysadmin

после выполнения sql запрос останавливает sql сервер и снова запускается нормально без параметра

теперь выполняется командный файл запускается от имени администратора с c#

 var proc = new Process();

  proc.StartInfo.CreateNoWindow = true; //run background
   proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

   proc.StartInfo.Verb = "runas"; //ask local admin pass when run
   proc.StartInfo.FileName = "batch file address";
  proc.Start();
...