
- 類(lèi)型:數(shù)據(jù)庫(kù)類(lèi)大。594KB語(yǔ)言:中文 評(píng)分:7.7
- 標(biāo)簽:
SQL2005使用起來(lái)真是比SQL2000難于上手,登陸名,用戶(hù),架構(gòu),角色,權(quán)限,反反復(fù)復(fù)的,沒(méi)弄清這個(gè)關(guān)系. 以前在服務(wù)器上的數(shù)據(jù)庫(kù)使用遠(yuǎn)程連接SQL2000創(chuàng)建的存儲(chǔ)過(guò)程,現(xiàn)在下載到本地,所有當(dāng)時(shí)的存儲(chǔ)過(guò)程所有者都不是dbo,而安全用戶(hù)里有dbo,默認(rèn)架構(gòu)也是dbo,登陸名是sa,dbo具有dbowner的權(quán)限,原以為這樣以sa創(chuàng)建adodb連接對(duì)象的話,是可以操作數(shù)據(jù)庫(kù)的所有對(duì)象的,沒(méi)想到在執(zhí)行到以前的存儲(chǔ)過(guò)程時(shí)提示:
Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]找不到存儲(chǔ)過(guò)程 'Proc_WebCount'。
一下子胡涂了一陣,默認(rèn)sa就是dbowner權(quán)限的,怎么會(huì)沒(méi)有執(zhí)行權(quán)限呢,反復(fù)設(shè)置dbo權(quán)限,架構(gòu),還有原來(lái)的所有者架構(gòu),權(quán)限帳號(hào),怎么也不能把現(xiàn)在的所有者與dbo聯(lián)系起來(lái). 最后查了點(diǎn)資料,終于找到修改數(shù)據(jù)庫(kù)中各個(gè)對(duì)象所有者的方法,修改了一下,直接執(zhí)行就可以用,挺方便..
以SA登陸,USE要選擇的數(shù)據(jù)庫(kù),再執(zhí)行下面的SQL語(yǔ)句:
--創(chuàng)建游標(biāo),查詢(xún)所有者為NiunvDB的記錄
declare csr1 cursor
for
select 'Name' = name
from sysobjects
where user_name(uid)='NiunvDB'
order by name
open csr1 --循環(huán)讀取游標(biāo)記錄,執(zhí)行系統(tǒng)存儲(chǔ)過(guò)程SP_ChangeObjectOwner修改對(duì)象所有者
FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
SET @name='NiunvDB.'+@name
EXEC SP_ChangeObjectOwner @name, 'dbo'
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1 執(zhí)行以后可以看到
告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
警告: 更改對(duì)象名的任一部分都可能會(huì)破壞腳本和存儲(chǔ)過(guò)程。
...... 就是符合查詢(xún)條件的全部對(duì)象的所有者被改了希望的所有者名稱(chēng)了.然后刷新數(shù)據(jù)庫(kù)對(duì)象,可以看到,原來(lái)的NiunvDB.開(kāi)頭的存儲(chǔ)過(guò)程全部變成了dbo.存儲(chǔ)過(guò)程名了..... sysobjects表里存儲(chǔ)了對(duì)應(yīng)數(shù)據(jù)庫(kù)的對(duì)象數(shù)據(jù),包括表,默認(rèn)值,主鍵,存儲(chǔ)過(guò)程,其中的type字段就表示對(duì)象類(lèi)型,大概意思如下:
P:存儲(chǔ)過(guò)程
U:用戶(hù)表
K:主鍵
D:默認(rèn)值
還有幾個(gè)類(lèi)型,想不出來(lái)是什么意思,不過(guò)這幾個(gè)應(yīng)該夠用了,要查表的信息,還可以使用
select * from INFORMATION_SCHEMA.TABLES
查詢(xún)出所有對(duì)應(yīng)數(shù)據(jù)庫(kù)中的表數(shù)據(jù),
INFORMATION_SCHEMA.columns可查全部表的列數(shù)據(jù)
INFORMATION_SCHEMA.VIEWS可查全部視圖數(shù)據(jù)
sp_changedbowner 'sa'
可直接更改當(dāng)前數(shù)據(jù)庫(kù)的所有者