『壹』 sqlserver2008創建新用戶時的架構和角色怎麼選
sa是登錄名 可以在sqlserver管理器的伺服器級別下的安全性-> 登錄名中查看
或者在目錄視圖中sys.server_principals 和 sys.sql_logins
(select *
from sys.sql_logins
go
select *
from sys.server_principals)中查看
默認情況下,sa登錄名在各資料庫中對應的用戶是dbo用戶,
dbo是資料庫的默認用戶。sql Server 安裝之後,dbo用戶就自動
存在了。dbo用戶擁有在資料庫中操作的所有許可權。SQL_USER與 WINDOWS_USER
在你剛進入sqlserver管理器的時候有身份驗證選項有Windows身份驗證和sql server身份驗證
本地機器上當然可以選擇Windows身份驗證,遠程就只有sql server身份驗證
以上僅是個人理解有誤之處還請告知
『貳』 sql server 2008的版本功能
SQL Server 2008出現在微軟數據平台願景上是因為它使得公司可以運行他們最關鍵任務的應用程序,同時降低了管理數據基礎設施和發送觀察和信息給所有用戶的成本。
這個平台有以下特點:
· 可信任的——使得公司可以以很高的安全性、可靠性和可擴展性來運行他們最關鍵任務的應用程序。
· 高效的——使得公司可以降低開發和管理他們的數據基礎設施的時間和成本。
· 智能的——提供了一個全面的平台,可以在你的用戶需要的時候給他發送觀察和信息。 一、可信任的
在今天數據驅動的世界中,公司需要繼續訪問他們的數據。SQL Server 2008為關鍵任務應用程序提供了強大的安全特性、可靠性和可擴展性。
(一)保護你的信息
在過去的SQL Server 2005的基礎之上,SQL Server 2008做了以下方面的增強來擴展它的安全性:
簡單的數據加密
SQL Server 2008可以對整個資料庫、數據文件和日誌文件進行加密,而不需要改動應用程序。進行加密使公司可以滿足遵守規范和及其關注數據隱私的要求。簡單的數據加密的好處包括使用任何范圍或模糊查詢搜索加密的數據、加強數據安全性以防止未授權的用戶訪問、還有數據加密。這些可以在不改變已有的應用程序的情況下進行。
外鍵管理
SQL Server 2008為加密和密鑰管理提供了一個全面的解決方案。為了滿足不斷發展的對數據中心的信息的更強安全性的需求,公司投資給供應商來管理公司內的安全密鑰。SQL Server 2008通過支持第三方密鑰管理和硬體安全模塊(HSM)產品為這個需求提供了很好的支持。
增強了審查
SQL Server 2008使你可以審查你的數據的操作,從而提高了遵從性和安全性。審查不只包括對數據修改的所有信息,還包括關於什麼時候對數據進行讀取的信息。SQL Server 2008具有像伺服器中加強的審查的配置和管理這樣的功能,這使得公司可以滿足各種規范需求。SQL Server 2008還可以定義每一個資料庫的審查規范,所以審查配置可以為每一個資料庫作單獨的制定。為指定對象作審查配置使審查的執行性能更好,配置的靈活性也更高。
(二)確保業務可持續性
有了SQL Server 2008,微軟繼續使公司具有提供簡化了管理並具高可靠性的應用的能力。
改進了資料庫鏡像
SQL Server 2008基於SQL Server 2005,並提供了更可靠的加強了資料庫鏡像的平台。新的特性包括:
· 頁面自動修復。SQL Server 2008通過請求獲得一個從鏡像合作機器上得到的出錯頁面的重新拷貝,使主要的和鏡像的計算機可以透明的修復數據頁面上的823和824錯誤。
· 提高了性能。SQL Server 2008壓縮了輸出的日誌流,以便使資料庫鏡像所要求的網路帶寬達到最小。
· 加強了可支持性
(1) SQL Server 2008包括了新增加的執行計數器,它使得可以更細粒度的對資料庫管理系統(Database Management Syste,DBMS)日誌記錄的不同階段所耗費的時間進行計時。
(2) SQL Server 2008包括動態管理視圖(Dynamic Management View)和對現有的視圖的擴展,以此來顯示鏡像會話的更多信息。
熱添加CPU
為了在線添加內存資源而擴展SQL Server中的已有的支持,熱添加CPU使資料庫可以按需擴展。事實上,CPU資源可以添加到SQL Server 2008所在的硬體平台上而不需要停止應用程序。
(三)最佳的和可預測的系統性能
公司在面對不斷增長的壓力,要提供可預計的響應和對隨著用戶數目的增長而不斷增長的數據量進行管理。SQL Server 2008提供了一個廣泛的功能集合,使你的數據平台上的所有工作負載的執行都是可擴展的和可預測的。
性能數據的採集
性能調整和排除故障對於管理員來說是耗費時間的工作。為了給管理員提供全面的執行洞察力,SQL Server 2008推出了范圍更大的數據採集,一個用於存儲性能數據的新的集中的資料庫,以及新的報表和監控工具。
擴展事件
SQL Server擴展事件是一個用於伺服器系統的一般的事件處理系統。擴展事件基礎設施是一個輕量級的機制,它支持對伺服器運行過程中產生的事件的捕獲、過濾和響應。這個對事件進行響應的能力使用戶可以通過增加前後文關聯數據,例如Transact SQL對所有事件調用堆棧或查詢計劃句柄,以此來快速的診斷運行時問題。事件捕獲可以按幾種不同的類型輸出,包括Windows事件跟蹤(Event Tracing for Windows,ETW)。當擴展事件輸出到ETW時,操作系統和應用程序就可以關聯了,這使得可以作更全面的系統跟蹤。
備份壓縮
保持在線進行基於磁碟的備份是很昂貴而且很耗時的。有了SQL Server 2008備份壓縮,需要的磁碟I/O 減少了,在線備份所需要的存儲空間也減少了,而且備份的速度明顯加快了。
數據壓縮
改進的數據壓縮使數據可以更有效的存儲,並且降低了數據的存儲要求。數據壓縮還為大型的限制輸入/輸出的工作負載例如數據倉庫提供了顯著的性能改進。
資源監控器
SQL Server 2008隨著資源監控器的推出使公司可以提供持續的和可預測的響應給終端用戶。資源監控器使資料庫管理員可以為不同的工作負載定義資源限制和優先權,這使得並發工作負載可以為終端用戶提供穩定的性能。
穩定的計劃
SQL Server 2008通過提供了一個新的制定查詢計劃的功能,從而提供了更好的查詢執行穩定性和可預測性,使公司可以在硬體伺服器更換、伺服器升級和產品部署中提供穩定的查詢計劃。 二、高效的
SQL Server 2008降低了管理系統、.NET架構和Visual Studio® Team System的時間和成本,使得開發人員可以開發強大的下一代資料庫應用程序。
(一)基於政策的管理
作為微軟正在努力降低公司的總成本所作的工作的一部分,SQL Server 2008推出了陳述式管理架構(DMF),它是一個用於SQL Server資料庫引擎的新的基於策略的管理框架。陳述式管理提供了以下優點:
· 遵從系統配置的政策
· 監控和防止通過創建不符合配置的政策來改變系統
· 通過簡化管理工作來減少公司的總成本
· 使用SQL Server 管理套件查找遵從性問題
DMF是一個基於政策的用於管理一個或多個SQL Server 2008實例的系統。要使用DMF,SQL Server政策管理員使用SQL Server 管理套件創建政策,這些政策管理伺服器上的實體,例如SQL Server的實例、資料庫、和其它SQL Server對象。DMF由三個組件組成:政策管理、創建政策的政策管理員,和顯式管理。管理員選擇一個或多個要管理的對象,並顯式檢查這些對象是否遵守指定的政策,或顯式地使這些對象遵守某個政策。
自動管理
政策管理員使用下面的執行模式之一,使政策自動執行:
· 強制——使用DDL觸發器阻止違反政策的操作
· 對改動進行檢查——當一個與某個政策相關的改動發生時,使用事件通知來評估這個政策
· 檢查時間表——使用一個SQL Server Agent 工作定期的評估一個政策
(二)改進了安裝
SQL Server 2008對SQL Server的服務生命周期提供了顯著的改進,它重新設計了安裝、建立和配置架構。這些改進將計算機上的各個安裝與SQL Server軟體的配置分離開來,這使得公司和軟體合作夥伴可以提供推薦的安裝配置。
(三)加速開發過程
SQL Server提供了集成的開發環境和更高級的數據提取,使開發人員可以創建下一代數據應用程序,同時簡化了對數據的訪問。
ADO .NET實體框架
在資料庫開發人員中的一個趨勢是定義高級的業務對象,或實體,然後他們可以將它們匹配到資料庫中的表和欄位,開發人員使用高級實體例如「客戶」或「訂單」來顯示背後的數據。ADO .NET 實體框架使開發人員可以以這樣的實體來設計關系數據。在這一提取級別的設計是非常高效的,並使開發人員可以充分利用實體關系建模。
語言級集成查詢能力
微軟的語言級集成查詢能力(LINQ)使開發人員可以通過使用管理程序語言例如C#或Visual Basic .NET,而不是SQL語句來對數據進行查詢。LINQ 使可以用.NET 框架語言編寫的無縫和強大的面向集合的查詢運行於ADO. NET(LINQ到SQL), ADO .NET 數據集(LINQ到數據集),ADO .NET 實體框架(LINQ到實體),和到實體數據服務匹配供應商。SQL Server 2008提供了一個新的LINQ到SQL供應商,使得開發人員可以直接將LINQ用於SQL Server 2008的表和欄位。
CLR集成和ADO .NET對象服務
ADO .NET 的對象服務層使得可以進行具體化檢索、改變跟蹤、和實現作為公共語言運行時(CLR)的數據的可持續性。開發人員使用ADO .NET 實體框架可以通過使用由ADO .NET 管理的CLR對象對資料庫進行編程。SQL Server 2008提供了提高性能和簡化開發過程的更有效的和最佳的支持。
Service Broker可擴展性
SQL Server 2008繼續加強了Service Broker 的能力。
· 會話優先權——使你可以配置優先權,使得最重要的數據會第一個被發送和進行處理。
· 診斷工具——診斷工具提高了你開發、配置和管理使用了Service Broker的解決方案的能力,例如在應用程序部署之前診斷分支丟失情況或配置不正確的安全問題。
Transact-SQL的改進
SQL Server 2008通過幾個關鍵的改進增強了Transact-SQL編程人員的開發體驗。
· Table Value Parameters – 在許多客戶的場景中,要傳遞一個表結構的值(行)的集合到伺服器上的一個存儲過程或函數中。這些值可能直接用於插入表或更新表,或者是用於更復雜的數據操作。值為表的參數為定義一個表類型和使應用程序創建、賦值和傳遞表結構的參數到存儲過程和函數中提供了更簡單的方式。
· 對象相關性——對象相關性的改進通過新推出的種類查看和動態管理功能使能夠可靠的找出對象間的相關性。相關性信息總是關於綁定架構和未綁定架構的對象的最新的信息。這個相關性會跟蹤存儲過程、表、視圖、函數、觸發器、用戶定義的類型、XML schema集合和其他對象。
· 日期/時間數據類型——SQL Server 2008推出了新的日期和時間數據類型:
(1) DATE——一個只包含日期的類型,只使用3個位元組來存儲一個日期
(2) TIME——一個只包含時間的類型,只使用3到5個位元組來存儲精確到100納秒時間
(3) DATETIMEOFFSET – 一個可辨別時區的日期/時間類型
(4) DATETIME2 ——一個具有比現有的DATETIME類型更精確的秒和年范圍的日期/時間類型
新的數據類型使應用程序可以有單獨的日期和時間類型,同時為用戶定義的時間值的精度提供較大的數據范圍。
(四)偶爾連接系統
有了移動設備和活動式工作人員,偶爾連接成為了一種工作方式。SQL Server 2008推出了一個統一的同步平台,使得在應用程序、數據存儲和數據類型之間達到一致性同步。在與Visual Studio 的合作下,SQL Server 2008使得可以通過ADO .NET中提供的新的同步服務和Visual Studio中的離線設計器快速的創建偶爾連接系統。SQL Server 2008提供了支持,使得可以改變跟蹤和使客戶可以以最小的執行消耗進行功能強大的執行,以此來開發基於緩存的、基於同步的和基於通知的應用程序。
(五)不只是關系數據
應用程序正在結合使用越來越多的數據類型,而不僅僅是過去資料庫所支持的那些。SQL Server 2008基於過去對非關系數據的強大支持,提供了新的數據類型使得開發人員和管理員可以有效的存儲和管理非結構化數據,例如文檔和圖片。還增加了對管理高級地理數據的支持。除了新的數據類型,SQL Server 2008還提供了一系列對不同數據類型的服務,同時為數據平台提供了可靠性、安全性和易管理性。這篇白皮書的下一章節將介紹非關系數據存儲的一些優點。
HIERARCHY ID
SQL Server 2008使資料庫應用程序以比以前更有效的方式建立樹結構。HierarchyId是一個新的系統類型,它可以存儲一個層次樹中顯示的結點的值。這個新的類型提供了一個靈活的編程模型。它作為一個CLR用戶定義的類型(UDT)來執行,它提供了幾種用於創建和操作層次結點的有效的及有用的內置方法。
FILESTREAM數據
新的SQL Server 2008 FILESTREAM 數據類型使大型的二進制數據,像文檔和圖片等可以直接存儲到一個NTFS文件系統中;文檔和圖片仍然是資料庫的主要組成部分,並維護事務的一致性。
FILESTREAM 使傳統的由資料庫管理的大型二進制數據可以作為單獨的文件存儲在資料庫之外,它們可以通過使用一個NTFS流API進行訪問。使用NTFS流API使普通文件操作可以有效的執行,同時提供所有豐富的資料庫服務,包括安全和備份。
集成的全文檢索
集成的全文檢索使得在全文檢索和關系數據之間可以無縫的轉換,同時使全文索引可以對大型文本欄位進行高速的文本檢索。
稀疏列
這個功能使NULL數據不佔物理空間,從而提供了一個非常有效的管理資料庫中的空數據的方法。例如,稀疏列使得一般包含極多要存儲在一個SQL Server 2008資料庫中的空值的對象模型不會佔用很大的空間。稀疏列還允許管理員創建1024列以上的表。
大型的用戶定義的類型
SQL Server 2008刪除了對用戶定義的類型的8,000位元組的限制,使用戶可以顯著的擴大他們的UDT的規模。
地理信息
SQL Server 2008為在基於空間的應用程序中消耗、擴展和使用位置信息提供了廣泛的空間支持。
· 地理數據類型
這個功能使你可以存儲符合行業空間標準例如開放地理空間聯盟(Open Geospatial Consortium,OGC)的平面的空間數據。這使得開發人員可以通過存儲與設計的平面表面和自然的平面數據例如內部空間等相關聯的多邊形、點和線來實現「平面地球」解決方案。
· 幾何數據類型
這個功能使你可以存儲地理空間數據並對其執行操作。使用緯度和經度的組合來定義地球表面的區域,並結合了地理數據和行業標准橢圓體(例如用於全球GPS解決方案的WGS84)。 三、智能的
商業智能(BI)繼續作為大多數公司投資的關鍵領域和對於公司所有層面的用戶來說的一個無價的信息源。SQL Server 2008提供了一個全面的平台,用於當用戶需要時你可以為其提供智能化。
(一)集成任何數據
公司繼續投資於商業智能和數據倉庫解決方案,以便從他們的數據中獲取商業價值。SQL Server 2008提供了一個全面的和可擴展的數據倉庫平台,它可以用一個單獨的分析存儲進行強大的分析,以滿足成千上萬的用戶在幾兆位元組的數據中的需求。下面是SQL Server 2008中在數據倉庫方面的一些優點。
數據壓縮
數據倉庫中的數據容量隨著操作系統數目的快速增加而在持續增長。內嵌在SQL Server 2008中的數據壓縮使得公司可以更有效的存儲數據,同時還提高了性能,因為降低了I/O 要求。
備份壓縮
保持一直在線做基於磁碟的備份是花費很昂貴的,並且很耗時。有了SQL Server 2008的備份壓縮,保持在線備份所需的存儲降低了,並且備份速度明顯變快了,因為所需要的磁碟I/O 減少了。
分區表並行
分割使公司能夠更有效的管理大型的、不斷增長的數據表,只要簡單的將它們分割為易管理的數據塊。SQL Server 2008是在SQL Server 2005中的分割的優勢之上建立的,它改進了對大型的分區表的操作性能。
星型聯接查詢優化器
SQL Server 2008為普通的數據倉庫場景提供了改進的查詢性能。星型聯接查詢優化器通過辨別數據倉庫連接模式降低了查詢響應時間。
資源監控器
SQL Server 2008隨著資源監控器的推出,使公司可以給終端用戶提供一致的和可預測的響應。資源監控器使公司可以為不同的工作負載定義資源限制和優先權,這使得並發工作負載可以提供穩定的性能。
分組設置
分組設置(GROUPING SETS)是對 GROUP BY 條件語句的擴展,它使得用戶可以在同一個查詢中定義多個分組。分組設置生成一個單獨的結果集,這個結果集相當於對不同分組的行進行了UNION ALL 的操作,這使得聚合查詢和報表更加簡單和快速。
捕獲變更數據
有了捕獲變更數據,變更會被捕獲並被放在變更表中。它捕獲變更的完整內容,維護交叉表的一致性,甚至是對交叉的schema變更也起作用。這使得公司可以將最新的信息集成到數據倉庫中。
MERGESQL語句
有了MERGE SQL 語句,開發人員可以更有效地處理數據倉庫的場景,例如檢查一行數據是否存在然後執行插入或更新。
可擴展的集成服務
集成服務的可擴展性方面的兩個關鍵優勢是:
· SQL Server集成服務 (SQL Server Integration Services,SSIS)管道改進
數據集成包現在可以更有效地擴展、使用有效的資源和管理最大的企業級的工作負載。這個新的設計將運行時間的可擴展性提高到多個處理器中。
· SSIS持久查找
執行查找是最常見的抽取、轉換和載入(ETL)操作。這在數據倉庫中尤為普遍,當實際記錄必須使用查找來轉換業務鍵到它們相應的替代中去時。SSIS 增強了查找的性能以支持大型表。
(二)發送相應的報表
SQL Server 2008提供了一個可擴展的商業智能基礎設施,使得IT人員可以在整個公司內使用商業智能來管理報表以及任何規模和復雜度的分析。SQL Server 2008使得公司可以有效的以用戶想要的格式和他們的地址發送相應的、個人的報表給成千上萬的用戶。通過提供了交互發送用戶需要的企業報表,獲得報表服務的用戶數目大大增加了。這使得用戶可以獲得對他們各自領域的洞察的相關信息的及時訪問,使得他們可以作出更好、更快、更符合的決策。SQL Server 2008使得所有的用戶可以通過下面的報表改進之處來製作、管理和使用報表:
企業報表引擎
有了簡化的部署和配置,可以在企業內部更簡單的發送報表。這使得用戶能夠輕松的創建和共享所有規模和復雜度的報表。
新的報表設計器
改進的報表設計器可以創建廣泛的報表,使公司可以滿足所有的報表需求。獨特的顯示能力使報表可以被設計為任何結構,同時增強的可視化進一步豐富了用戶的體驗。
此外,報表服務2008使商業用戶可以在一個可以使用Microsoft Office的環境中編輯或更新現有的報表,不論這個報表最初是在哪裡設計的,從而使公司能夠從現有的報表中獲得更多的價值。
強大的可視化
SQL Server 2008擴展了報表中可用的可視化組件。可視化工具例如地圖、量表和圖表等使得報表更加友好和易懂。
Microsoft Office渲染
SQL Server 2008提供了新的Microsoft Office渲染,使得用戶可以從Word里直接訪問報表。此外,現有的Excel® 渲染器被極大的增強了,它被用以支持像嵌套數據區域、子報表和合並單元格等功能。這使得用戶可以維護顯示保真度和改進Microsoft Office應用中所創建的報表的全面可用性。
Microsoft SharePoint® 集成
SQL Server 2008報表服務將Microsoft Office SharePoint Server 2007和Microsoft SharePoint Services 深度集成,提供了企業報表和其它商業洞察的集中發送和管理。這使得用戶可以訪問包含了與他們直接在商業門戶中所做的決策相關的結構化和非結構化信息的報表。
(三)使用戶獲得全面的洞察力
及時訪問准確信息,使用戶快速對問題、甚至是非常復雜的問題作出反應,這是在線分析處理的前提(Online Analytical Processing,OLAP)。SQL Server 2008基於SQL Server 2005強大的OLAP能力,為所有用戶提供了更快的查詢速度。這個性能的提升使得公司可以執行具有許多維度和聚合的非常復雜的分析。這個執行速度與Microsoft Office的深度集成相結合,使SQL Server 2008可以讓所有用戶獲得全面的洞察力。SQL Server分析服務具有下面的分析優勢:
設計為可擴展的
SQL Server 2008加強了分析能力和提供了更復雜的計算和聚合,使得能進行的分析更寬廣。新的立方體設計工具幫助用戶將分析基礎設施的開發工作流線化,使他們可以為優化性能建立解決方案。這個設計里內嵌了Best Practice Design Alerts,使得開發人員可以在設計時集成實時警告,這優化了設計。Dimension Designer使得可以簡單的查看和編輯屬性關系,還可以提供多個內置的對理想尺度設計的支持的驗證,而在數據挖掘結構中增強的靈活性使得可以創建多個不同的模型,而不僅僅是過濾數據。
塊計算
塊計算提供了一個在處理性能方面的顯著提高,使得用戶可以增加他們的層級深度和計算的復雜度。
回寫到MOLAP
SQL Server 2008分析服務中的新的基於MOLAP 的回寫功能使得不再需要查詢ROLAP 分區。這給用戶提供了更強的用於分析應用程序中的回寫設定,而不需要以OLAP 性能為代價。
資源監控器
在SQL Server 2008中一個新的資源監控器提供了對資源利用情況的詳細觀察。有了這個資源監控器,資料庫管理員可以快速並輕松的監控和控制分析工作負載,包括識別哪個用戶在運行什麼查詢和他們會運行多久,這使得管理員可以更好的優化伺服器的使用。
預測分析
一個改進的時間序列演算法擴大了預測能力。這個查詢數據挖掘結構的能力使得報表可以很容易的包含從挖掘模型的外部得來的屬性。新的交叉驗證特性對數據進行多處對比,發送給你可靠的結果。這些數據挖掘的改進之處一起為更好的洞察和更豐富的信息提供了機會。
『叄』 sql server 中創建架構,架構是干什麼用的,為什麼要創建架構,有什麼好處
SQL Server 中的 架構 ( schema )
與 軟體構架 與 架構師 的不是同一個概念
schema 是用於 在一個 大項目中的 各個 小項目
每個 小項目的表, 放在 各自的 schema 下面.
這樣, 遇到 小項目裡面. 有 相同名字的 表的話, 不會發生沖突.
例如一個 公司的 系統.
裡面分2個 子系統, 分別為 財務系統 和 人力資源系統.
這2個 子系統, 共用一個資料庫
.
那麼 財務系統的表, 可以放在 財務的 schema.
人力資源系統的表,放在 人力資源系統的模式裡面。
這2個 子系統, 能夠 互相訪問 對方的表
但是又不因為 表重名 的問題,影響對方。
體系結構是下面這個樣子的
[伺服器名稱].[資料庫名稱].[構架名稱].[表名]
create database --> 創建一個資料庫
create schema --> 創建一個構架
當你在 SQL Server 裡面, 使用 create database 創建一個資料庫以後。
你可以不必額外的去創建 schema
因為 SQL Server 會 自動的創建一個 名字叫 dbo 的 schema
『肆』 sql server 2005 添加架構 需要什麼許可權
架構的作用與示例
用戶與架構(schema)分開,讓資料庫內各對象不再綁在某個用戶賬號上,可以解決SQL SERVER 2000及以前版本中「用戶離開公司"問題,也就是在擁有該對象的用戶離開公司,或離開該職務時,不必要大費周章地更改該用戶所有的對象屬於新的用戶所有。另外,也可讓 DBA 在安裝某個套裝軟體時,設置該套裝軟體所用的資料庫對象都屬於某個特定的架構,容易區別。也就是說,在單一資料庫內,不同部門或目的的對象,可以通過架構區分不同的對象命名原則與許可權。
在 SQL Server 2005 /2008中,架構獨立於創建它們的資料庫用戶而存在。可以在不更改架構名稱的情況下轉讓架構的所有權。並且可以在架構中創建具有用戶友好名稱的對象,明確指示對象的功能。例如,除了 cus.app.entry.customEntry 外,您還可以創建名為 cus.app.manifest.customEntry 的架構。因為「manifest」不是用戶,所以從資料庫中刪除用戶後,無需更改此名稱。這就簡化了資料庫管理員和開發人員的工作。
SQL Server 2005/2008 還引入了「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2000 中,首先檢查的是調用資料庫用戶所擁有的架構,然後是 DBO 擁有的架構。在 SQL Server 2005 /2008中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO 作為其默認架構。
下面的顯示SQL Server許可權層次結構的圖可能會給我們一個直觀的認識:
SQL Server 2005/2008 Database Engine 管理著可以通過許可權進行保護的實體的分層集合。這些實體稱為「安全對象」。在安全對象中,最突出的是伺服器和資料庫,但可以在更細的級別上設置離散許可權。SQL Server 通過驗證主體是否已獲得適當的許可權來控制主體對安全對象執行的操作。
安全對象關系如下圖:
下面舉個具體的示例來說明以一下架構的作用。
--命令對架構進行操作
use master
go
setuser
go
--創建測試資料庫
create database schTest
go
create login df with password='sj1234',default_database=schTest
create login xhl with password='sj1245',default_database=schTest
go
use schTest
go
-- 創建兩個用戶時沒有指定屬於哪個架構
create user df for login df
create user xhl for login xhl
-- 這個表沒指定屬於哪個架構屬於默認DBO 架構
go
create table tb1 (姓名 varchar(8),性別 char(2))
go
--這個表就屬於sch架構
create schema sch
go
create table sch.tb2(姓名 varchar(8),性別 char(2),年齡 int)
go
-- 賦予schTest這個用戶查詢sche架構中的對象的許可權.
grant select on schema::sch to df
go
setuser 'df' --切換用戶df
select * from tb2
-- 此時報告"對象名無效" 是因為沒有指定tb2的架構,系統默認為dbo,而我們的tb2屬於sch架構.
--帶上架構名稱,就可以查詢了
go
select * from sch.tb2
go
setuser -- 切換到sa
---切換到xhl
setuser 'xhl'
--不能查詢,是因為沒有許可權
select * from sch.tb2
go
setuser --切換sa
--給df用戶賦默認架構
alter user df with default_schema=sch
go
setuser 'df' --切換df
-- 此時不需要指定sch 也可以了,如果架構中還有其他對象,也可以查詢
select * from tb2
go
setuser --切換sa
--創建第三張測試表,同樣的是sch架構下
create table sch.tb3 (id int,uname varchar(8))
go
--切換用戶df
setuser 'df'
---可以進行查詢
select * from tb3
go
---但是無法進行數據插入,因為沒有插入許可權
insert into tb3 values (1,'abcde') --拒絕了insert許可權
go
setuser
--賦插入許可權
grant insert on schema::sch to df
--切換用戶df
setuser 'df'
go
---可以進行數據插入
insert into tb3 values (1,'abcde') --OK!
---查詢結果
select * from tb3
GO
Grant alter on schema::sch to df -- 使schTest 這個用戶對所有的架構都有可更改的能力。
--錯誤
--無法對sa、dbo、實體所有者、information_schema、sys 或您自己授予、拒絕或撤消許可權。
GO
Use master
go
Grant control server to df -- 使schTest這個用戶能夠控制伺服器。
--錯誤
--無法對sa、dbo、實體所有者、information_schema、sys 或您自己授予、拒絕或撤消許可權。
setuser
go
use schtest
go
--創建架構sch1
create schema sch1
go
-- 修改對象的架構tb2表的架構由sch 轉移到sch1
alter schema sch1 transfer sch.tb2
go
--創建一個新用戶,同時指定默認schema,默認屬於DBO
create login yhy with password='sj1234',default_database=master
GO
use schTest
GO
create user yhy for login yhy with default_schema=sch --屬於sch
--切換用戶yhy
setuser 'yhy'
--查詢表,對象名'tb2' 無效。
select * from tb2
go
setuser
--賦架構許可權
grant select on schema::sch1 to yhy
--切換用戶yhy
setuser 'yhy'
go
select * from tb2 ---還是無效,因為不在同一個schema
go
setuser
go
alter user yhy with default_schema=sch1 --更改yhy的默認架構
GO
--由於yhy不是當前用戶,所以無法進行查詢
select * from tb2
--顯示當前用戶
GO
select user
GO
--切換用戶yhy
setuser 'yhy'
-- 此時就可以進行查詢了,如果架構中還有其他對象,也可以查詢
go
select * from tb2
--顯示當前用戶
select user
go
--切換用戶
Setuser
--切換用戶為df
setuser 'df'
-- 此時由於tb2的架構由sch變為了sch1,所以df就不可以查詢tb2了
go
--查詢報錯
select * from tb2
--顯示當前用戶
select user
go
setuser
go
use master
go
---刪除用戶
drop user df
drop user xhl
drop user yhy
---刪除登錄名
drop login df
drop login yhy
drop login xhl
--刪除資料庫
drop database schTest