SQL問(wèn)題匯編(1)
發(fā)表時(shí)間:2024-06-08 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]開(kāi)發(fā)人員從SQL Server 6.5升級(jí)到SQL Server 7.0應(yīng)該注意哪些問(wèn)題? 對(duì)于一般帳號(hào)來(lái)說(shuō)升級(jí)程序工作得非常棒。在升級(jí)到SQL Server 7.0過(guò)程中,SQL Server 6.5中的別名被轉(zhuǎn)換成角色成員。例如,如果你的一個(gè)別名是“dbo”, SQL Server將把你作為“...
開(kāi)發(fā)人員從SQL Server 6.5升級(jí)到SQL
Server 7.0應(yīng)該注意哪些問(wèn)題?
對(duì)于一般帳號(hào)來(lái)說(shuō)升級(jí)程序工作得非常棒。在升級(jí)到SQL Server 7.0過(guò)程中,SQL
Server 6.5中的別名被轉(zhuǎn)換成角色成員。例如,如果你的一個(gè)別名是“dbo”,
SQL Server將把你作為“db_owner”固定服務(wù)器角色中的成員。如果你有數(shù)個(gè)登錄名別名是“sales”,
SQL Server 7.0升級(jí)程序?qū)?chuàng)建一個(gè)“sales”角色,并為這些用戶創(chuàng)建帳號(hào),然后把他們都放入到“sales”角色中。SQL
Server 6.5中的“sales”帳號(hào)所擁有的權(quán)限中被分配給SQL Server 7.0中的“sales”角色。升級(jí)過(guò)程中SQL
Server還清理系統(tǒng)權(quán)限的模式位,以消除重復(fù)的權(quán)限。
比較困難的情況是有人可能會(huì)把來(lái)自不同機(jī)器的10個(gè)數(shù)據(jù)庫(kù)恢復(fù)到單個(gè)的SQL
Server中,然后再升級(jí)。在SQL Server 6.5中,用戶帳號(hào)必須匹配master數(shù)據(jù)庫(kù)中的“syslogins”系統(tǒng)表和每個(gè)數(shù)據(jù)庫(kù)中的“sysusers”系統(tǒng)表。不幸的是,當(dāng)你在SQL
Server 6.5中恢復(fù)來(lái)自其他服務(wù)器的數(shù)據(jù)庫(kù)時(shí),它們不能夠匹配。當(dāng)這種情況下數(shù)據(jù)庫(kù)被恢復(fù)后,其安全系統(tǒng)已經(jīng)損壞,升級(jí)到SQL
Server 7.0后仍然是損壞的。
訣竅是在升級(jí)前保證你的SQL Server 6.5系統(tǒng)是工作良好的。升級(jí)前你還應(yīng)該運(yùn)行“sp_change_users_login”系統(tǒng)存儲(chǔ)過(guò)程來(lái)確保數(shù)據(jù)庫(kù)用戶和登錄名存在正確的映射關(guān)系。
使用SQL Server 7.0建立一個(gè)安全的數(shù)據(jù)庫(kù)的最好方法是什么?
永遠(yuǎn)不要給用戶直接訪問(wèn)表的權(quán)限。如果你希望讓用戶使用交互式工具如Microsoft
Acess 2000來(lái)訪問(wèn)數(shù)據(jù)庫(kù),可以只給他們?cè)L問(wèn)視圖和存儲(chǔ)過(guò)程的權(quán)限,而不是對(duì)表的直接訪問(wèn)權(quán)限。如果存儲(chǔ)過(guò)程的擁有者是“dbo”,而且存儲(chǔ)過(guò)程所引用的表和視圖的擁有者也都是“dbo”,給予用戶對(duì)存儲(chǔ)過(guò)程的執(zhí)行(EXECUTE)權(quán)限就足夠了。這樣就根本不用檢查對(duì)表的訪問(wèn)權(quán)限了。
你還可以使用其它安全特性,比如通過(guò)在存儲(chǔ)過(guò)程中加入商業(yè)邏輯來(lái)控制哪些字段或行能夠被訪問(wèn)。視圖是阻止用戶直接訪問(wèn)表的另一種途徑。與存儲(chǔ)過(guò)程的區(qū)別是,你可以為視圖授予SELECT、INSERT、UPDATE或DELETE權(quán)限,而存儲(chǔ)過(guò)程則只能授予EXECUTE權(quán)限。
還有一件需要注意的事情是,如果你在另外一個(gè)數(shù)據(jù)庫(kù)中執(zhí)行SELECT語(yǔ)句,數(shù)據(jù)庫(kù)對(duì)象擁有者的的鏈?zhǔn)疥P(guān)系仍然適用。比如說(shuō),在由SQL
Server登錄名“sa”所擁有的pubs數(shù)據(jù)庫(kù)中,你就不能執(zhí)行跨表查詢連接至被一個(gè)NT登錄名所擁有的數(shù)據(jù)庫(kù)中,即使兩個(gè)登錄名都是“sysadmin”角色的成員。如果你希望連接來(lái)自3個(gè)不同數(shù)據(jù)庫(kù)的表,那么這3個(gè)數(shù)據(jù)庫(kù)的擁有者應(yīng)該是同一個(gè)帳號(hào)。如果需要的話你可以使用存儲(chǔ)過(guò)程“sp_changedbowner”來(lái)改變數(shù)據(jù)庫(kù)的擁有者。
(出處:熱點(diǎn)網(wǎng)絡(luò))