SQL問題彙編(1)

來源:互聯網
上載者:User
問題 開發人員從SQL Server 6.5升級到SQL
Server 7.0應該注意哪些問題?

對於一般帳號來說升級程式工作得非常棒。在升級到SQL Server 7.0過程中,SQL
Server 6.5中的別名被轉換成角色成員。例如,如果你的一個別名是“dbo”,
SQL Server將把你作為“db_owner”固定伺服器角色中的成員。如果你有數個登入名稱別名是“sales”,
SQL Server 7.0升級程式將建立一個“sales”角色,並為這些使用者建立帳號,然後把他們都放入到“sales”角色中。SQL
Server 6.5中的“sales”帳號所擁有的許可權中被分配給SQL Server 7.0中的“sales”角色。升級過程中SQL
Server還清理系統許可權的模式位,以消除重複的許可權。


比較困難的情況是有人可能會把來自不同機器的10個資料庫恢複到單個的SQL
Server中,然後再升級。在SQL Server 6.5中,使用者帳號必須匹配master資料庫中的“syslogins”系統資料表和每個資料庫中的“sysusers”系統資料表。不幸的是,當你在SQL
Server 6.5中恢複來自其他伺服器的資料庫時,它們不能夠匹配。當這種情況下資料庫被恢複後,其安全系統已經損壞,升級到SQL
Server 7.0後仍然是損壞的。


訣竅是在升級前保證你的SQL Server 6.5系統是工作良好的。升級前你還應該運行“sp_change_users_login”系統預存程序來確保資料庫使用者和登入名稱存在正確的映射關係。



使用SQL Server 7.0建立一個安全的資料庫的最好方法是什嗎?

永遠不要給使用者直接存取表的許可權。如果你希望讓使用者使用互動式工具如Microsoft
Acess 2000來訪問資料庫,可以只給他們訪問視圖和預存程序的許可權,而不是對錶的直接存取許可權。如果預存程序的擁有者是“dbo”,而且預存程序所引用的表和視圖的擁有者也都是“dbo”,給予使用者對預存程序的執行(EXECUTE)許可權就足夠了。這樣就根本不用檢查對錶的存取權限了。



你還可以使用其它安全特性,比如通過在預存程序中加入商業邏輯來控制哪些欄位或行能夠被訪問。視圖是阻止使用者直接存取表的另一種途徑。與預存程序的區別是,你可以為視圖授予SELECT、INSERT、UPDATE或DELETE許可權,而預存程序則只能授予EXECUTE許可權。



還有一件需要注意的事情是,如果你在另外一個資料庫中執行SELECT語句,資料庫物件擁有者的的鏈式關係仍然適用。比如說,在由SQL
Server登入名稱“sa”所擁有的pubs資料庫中,你就不能執行跨表查詢串連至被一個NT登入名稱所擁有的資料庫中,即使兩個登入名稱都是“sysadmin”角色的成員。如果你希望串連來自3個不同資料庫的表,那麼這3個資料庫的擁有者應該是同一個帳號。如果需要的話你可以使用預存程序“sp_changedbowner”來改變資料庫的擁有者。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。