2009年9月17日 星期四

無法使用特殊主體 'sa'

今天再測試程式的時候,發現一個問題,因為同事的程式指定要用 sa 帳號,(通常我是另開帳號,每個專案用不同的帳號去操作,sa通常是冰起來,因為sa牽一髮則動全身,一方面容易被攻擊,改密碼又很麻煩,所以我是不用sa的),但沒想到SQL2008竟然把sa歸類為特殊主體,結果我要把sa的權限加到資料庫時,死都不給我加,找了相關的界面,都沒辦法改變,後來 google 了好幾篇文章後終於找到方法,方法如下:

◆資料庫的相容性層級需要是:90
可用下列的指令調整:

USE [master]
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'資料庫名稱', @new_cmptlevel=90
GO

◆資料庫應該要具備有效的擁有者。
請使用以下的指令來進行調整:
USE master
GO
ALTER AUTHORIZATION ON DATABASE::資料庫名稱 TO sa


USE [資料庫名稱]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

就OK了
謝謝孤狗大神,跟寫文章的人.(我是記錄一下,避免以後又找不到)

1 則留言:

  1. 發現我設成90會發生錯誤:

    資料庫相容性層級的有效值為 100、110 或 120。

    後來我依照這篇文章去把sa設成db_owner

    http://www.noelpulis.com/fix-cannot-use-the-special-principal-sa-microsoft-sql-server-error-15405/

    語法是
    USE mydatabase
    exec sp_changedbowner 'sa', 'true'

    回覆刪除