从 C# 中将 Sql 设置为单用户模式并创建管理员用户
Set Sql to Single User mode From C# and Create Admin User
我有一个连接到数据库并读取数据的 c# winform 应用程序。
这个数据库也被另一个应用程序使用。我刚刚从我的应用程序执行了一个查询来读取一些数据。
我没有数据库的用户名和密码
所以我必须手动将 sql 服务更改为单用户模式:将 -m 参数添加到 sql 服务,然后重新启动该服务,因为我有本地管理员密码。我可以使用 windows 登录并创建用户并为其设置 sysadmin roll。
现在我想在 c# 上实现所有这些可编程性
有没有办法在 sql 上使用 windows 本地管理员密码和 sql 命令创建系统管理员用户?
我做到了
首先创建批处理文件示例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" 仅在单用户模式下从命令行连接
启动单用户模式后执行query.sql
-s 。服务器地址在这里我的本地
-e连接windows认证
-i sql 查询执行
query.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查询中首先检查新用户是否存在删除然后使用系统管理员角色创建
执行 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();
我有一个连接到数据库并读取数据的 c# winform 应用程序。 这个数据库也被另一个应用程序使用。我刚刚从我的应用程序执行了一个查询来读取一些数据。
我没有数据库的用户名和密码
所以我必须手动将 sql 服务更改为单用户模式:将 -m 参数添加到 sql 服务,然后重新启动该服务,因为我有本地管理员密码。我可以使用 windows 登录并创建用户并为其设置 sysadmin roll。
现在我想在 c# 上实现所有这些可编程性
有没有办法在 sql 上使用 windows 本地管理员密码和 sql 命令创建系统管理员用户?
我做到了
首先创建批处理文件示例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" 仅在单用户模式下从命令行连接
启动单用户模式后执行query.sql
-s 。服务器地址在这里我的本地
-e连接windows认证
-i sql 查询执行
query.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查询中首先检查新用户是否存在删除然后使用系统管理员角色创建
执行 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();