将Sql从C#设置为单用户模式并创建管理员用户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Sql从C#设置为单用户模式并创建管理员用户相关的知识,希望对你有一定的参考价值。

我有一个c#winform应用程序,该应用程序连接到数据库并读取数据。该数据库也被另一个应用程序使用。我刚刚从我的应用程序执行查询以读取一些数据。

我没有数据库的用户名和密码。

因此,我必须手动将sql服务更改为单用户模式:将-m参数添加到sql服务,然后重新启动服务,并且因为我具有本地管理员密码。我可以使用Windows登录名登录并创建用户并将sysadmin roll设置为它。

现在我想在c#上完成所有这些可编程性

是否可以通过sql命令在Windows上使用Windows本地管理员密码在sql上创建sysadmin用户?

答案

我能够做到

首先创建批处理文件示例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服务器

和用于启动单用户模式的start -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查询中,首先检查newuser是否存在,然后使用sysadmin角色创建

执行SQL查询后停止SQL Server,然后再次正常启动而没有参数

现在执行以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();

以上是关于将Sql从C#设置为单用户模式并创建管理员用户的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2000 单用户如何设置?

SQL Server 数据库变成单个用户怎么办

SQL Server 数据库变成单个用户怎么办

SQL SERVER的单用户模式以及专用管理员连接

linux设置密码为小键盘未开下的123456,等不进去该如何是好

SQL Server 2000怎么以单用户模式使用RESTORE DATABASE操作异常终止 怎么办?