在ASP程式中以SQLOLEDB連線到SQL Server2000

在建立連線時發生
Microsoft OLE DB Provider for SQL Server (0x80004005)
Login failed for user 'kingkong'. Reason: Not associated with a
trusted SQL Server connection
的錯誤

其中連線字串如下:
Provider=SQLOLEDB; Data Source=DDSQL02; Initial Catalog=testdb1; User ID="test1";Password="test1"

未設定
integrated Security=SSPI及Trusted_Connection=yes

網路上討論均是以未設定好SQL Server登入模式為解決方法,但經檢查後SQL Server2000 設定均為混合模式

現在發現將上面的連線字串DataSource改為IP就可解決

經使用者敘述是先灌好SQL Server 2000後,再變更電腦名稱及加入網域,是否因此造成透過SQLOLEDB連線時預先以windows帳號登入?


當用戶嘗試在查詢分析器裏面使用sa來連接SQL Server,或者在企業管理器裏面使用sa來新建一個SQL Server註冊時,經常會遇到如圖 2 所示的錯誤資訊。該錯誤產生的原因是由於SQL Server使用了"僅 Windows"的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接。解決方法如下所示:

  1、 在伺服器端使用企業管理器,並且選擇"使用 Windows 身份驗證"連接上 SQL Server;

  2、 展開"SQL Server組",滑鼠右鍵點擊SQL Server伺服器的名稱,選擇"屬性",再選擇"安全性"選項卡;

  3、 在"身份驗證"下,選擇"SQL Server和 Windows "。

  4、 重新啟動SQL Server服務。

  在以上解決方法中,如果在第 1 步中使用"使用 Windows 身份驗證"連接 SQL Server 失敗,那麼我們將遇到一個兩難的境地:首先,伺服器只允許了 Windows 的身份驗證;其次,即使使用了 Windows 身份驗證仍然無法連接上伺服器。這種情形被形象地稱之為"自己把自己鎖在了門外",因為無論用何種方式,用戶均無法使用進行連接。實際上,我們可以通過修改一個註冊表鍵值來將身份驗證方式改為 SQL Server 和 Windows 混合驗證,步驟如下所示:

  1、點擊"開始"-"運行",輸入regedit,回車進入註冊表編輯器;

  2、依次展開註冊表項,瀏覽到以下註冊表鍵:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]

  3、在螢幕右方找到名稱"LoginMode",雙擊編輯雙字節值;

  4、將原值從1改為2,點擊"確定";

  5、關閉註冊表編輯器;

  6、重新啟動SQL Server服務。

  此時,用戶可以成功地使用sa在企業管理器中新建SQL Server註冊,但是仍然無法使用Windows身份驗證模式來連接SQL Server。這是因為在 SQL Server 中有兩個缺省的登錄帳戶:BUILTIN\Administrators 以及 <機器名>\Administrator 被刪除。要恢復這兩個帳戶,可以使用以下的方法:

  1、打開企業管理器,展開伺服器組,然後展開伺服器;

  2、展開"安全性",右擊"登錄",然後單擊"新建登錄";

  3、在"名稱"框中,輸入 BUILTIN\Administrators;

  4、在"伺服器角色"選項卡中,選擇"System Administrators" ;

  5、點擊"確定"退出;

  6、使用同樣方法添加 <機器名>\Administrator 登錄。

  以下註冊表鍵

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode

  的值決定了SQL Server將採取何種身份驗證模式。該值為1,表示使用Windows 身份驗證模式;該值為2,表示使用混合模式(Windows 身份驗證和 SQL Server 身份驗證)。

創作者介紹
創作者 bgm 的頭像
bgm

bgm

bgm 發表在 痞客邦 留言(0) 人氣( 1837 )