【C#】SQL Server的Windows登錄身份和混合驗證模式切換及代碼自動切換
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
兩個方法:
方法一:手工切換
1.打開企業(yè)管理器看到這個SQL-SERVER組下面的(local)windowsNT。
2.右擊鼠標(biāo),點屬性,這樣看到一個窗口。
3.然后點擊安全性,選擇SQL Server和Windows,點擊確定。
4.重新啟動SQLSERVER這樣就ok了。
方法二:C#代碼自動切換
1.開始--->運行,鍵入regedit--->按確定開打注冊表
2.找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer(紅色部分更換為實際安裝的實例)
3.這個文件夾里面有個LoginMode,也就是登陸方式,你把這個的值(雙擊改值)改為2,這樣就ok了,1代表windows認(rèn)證,2代表混合模式認(rèn)證。
當(dāng)然如果你是想改為windows認(rèn)證的話,你還要注意里面兩個缺省的用戶會被你刪掉,你必須自己添加。另外,在Windows認(rèn)證模式下,sa賬號會被SQL Server自動改為禁用狀態(tài),切換到混合驗證模式后,必須將sa賬號設(shè)置為激活啟用狀態(tài),并且有可能需要重置sa的訪問密碼。
【C#代碼】
//更改注冊表,檢查是否開啟SQL Server混合身份驗證模式
try
{
//遠(yuǎn)程桌面端口,判斷操作系統(tǒng)版本(64位\32位)打開注冊表項
RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, IntPtr.Size == 8 ? RegistryView.Registry64 : RegistryView.Registry32); RegistryKey sub_key_LoginMode = localKey.OpenSubKey(@"SoftWare\Microsoft\Microsoft SQL Server\" + tempInstanceName + @"\MSSQLServer", true);
if (sub_key_LoginMode.GetValue("LoginMode").ToString() != "2")
{
Int32 tempInt_2 = 2; //預(yù)先定義一個有符號32位數(shù) sub_key_LoginMode.SetValue("LoginMode", tempInt_2, RegistryValueKind.DWord);
} sub_key_LoginMode.Close();localKey.Close(); }
catch (Exception) { } //獲取數(shù)據(jù)庫連接字符串,激活sa賬號,更改sa密碼
ConnectionString = "server=.;database=master;Integrated Security=SSPI;";
SqlConn = new SqlConnection(ConnectionString);
try
{
SqlConn.Open();
String sqlCommandText = @"alter login sa enable; alter login sa with password = '" + tempPW + "' unlock, check_policy = off, check_expiration = off;";
SqlCommand sqlCommand = new SqlCommand(sqlCommandText, SqlConn);
sqlCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("SQL Server管理員sa賬號啟用/訪問密碼更改失敗,詳細(xì)錯誤說明:\r\n" + ex.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
SqlConn.Close();
} 相關(guān)教程:
該文章在 2021/6/16 10:55:09 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |