Readme_Impersonation 範例
這個範例僅適用於 SQL Server 2005 和 SQL Server 2008,不適用於 SQL Server 2005 之前的任何 SQL Server 版本。
「模擬」範例示範在使用整合式安全性時,如何利用模擬,使用從用戶端傳遞的認證存取作業系統保護的資源,例如檔案。依預設,當存取這些種類的資源時,會使用其下執行有 SQL Server 之帳戶的認證。
附註: |
---|
此種格式的模擬不會影響存取 SQL Server 保護的資源 (例如資料表),除非您正在透過 ADO.NET 執行對另一個資料庫伺服器 (SQL Server 或其他類型的資料庫伺服器) 的資料存取。在此情況下,您應該在執行連接上 Open 方法的期間使用模擬,以便將用戶端的認證傳遞至遠端伺服器。在其他 ADO.NET 呼叫期間不需要使用模擬。
|
此範例同時也示範如何使用 Common Language Runtime (CLR) 資料表值函數,存取有關目錄所包含之檔案的資訊。
安裝目錄:C:\Program Files\Microsoft SQL Server\100\Samples\Engine\Programmability\CLR\Impersonation\
您必須先下載並安裝 SQL Server 範例和範例資料庫,才可以檢視或使用它們。如需詳細資訊,請參閱<安裝 SQL Server 範例和範例資料庫的考量>。
狀況
Jane 是 Adventure Works Cycles 的開發人員。她想要使用從用戶端傳遞的認證,存取有關伺服器上目錄中之檔案的資訊。
語言
Transact-SQL、Visual C# 和 Visual Basic。
功能
「模擬」範例會使用 SQL Server 的下列功能。
應用程式區 | 功能 |
---|---|
整體 |
CLR、安全性 |
必要條件
執行此範例之前,請確定已安裝下列軟體:
- Microsoft SQL Server 或 Microsoft SQL Server Express。您可以從 SQL Server Express 文件集和範例網站中免費取得 SQL Server Express
- SQL Server 中包含的 AdventureWorks 資料庫,也可以從 SQL Server 開發人員網站取得。
- SQL Server Database Engine 範例。SQL Server 中隨附這些範例。您可以從 SQL Server 開發人員網站下載最新版的範例。
- .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免費取得 .NET Framework SDK。請參閱<安裝 .NET Framework 文件集>。
建立範例
如果您尚未建立強式名稱金鑰檔,請利用下列指示產生金鑰檔。
若要產生強式名稱金鑰檔
開啟 Microsoft Visual Studio 2005 命令提示字元。按一下 [開始],依序指向 [程式集] 和 [Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]。
-- 或 --
開啟 Microsoft .NET Framework 命令提示字元。按一下 [開始],依序指向 [程式集] 和 [Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]。
使用變更目錄命令 (CD),將命令提示字元視窗的現行目錄切換到範例的安裝資料夾。
注意: 若要判斷範例所在的資料夾,請按一下 [開始],依序指向 [程式集]、[Microsoft SQL Server] 和 [文件集和教學課程],然後按一下 [範例目錄]。如果是使用預設安裝位置,則範例位於 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples。 在命令提示字元中,執行下列其中一個命令來產生金鑰檔:
sn -k SampleKey.snk
重要事項: 如需有關強式名稱金鑰組的詳細資訊,請參閱 MSDN 之 .NET Development Center 中的<Security Briefs: Strong Names and Security in the .NET Framework>。
若要建立模擬範例
使用 Visual Studio 2005 和已提供的 Visual Studio 方案,或使用 Microsoft MSBuild (隨附於 .NET Framework SDK 2.0) 來編譯範例。在命令提示字元中執行下列命令:
msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\ Impersonation.sln
請確定已安裝 AdventureWorks 資料庫。
如果您沒有在預設位置安裝 SQL Server 引擎範例,則請修改 Scripts\InstallCS.sql 和 Scripts\InstallVB.sql 中指令碼之 CREATE ASSEMBLY 區段的路徑,以參考已安裝範例的位置。
如果您不是正在使用之 SQL Server 執行個體的管理員,則必須讓管理員授與您 CreateAssembly 權限來完成安裝。
在 Microsoft SQL Server Management Studio 中,根據您所編譯的是 Visual C# 專案還是 Visual Basic 專案,來開啟 scripts\installCS.sql 或 scripts\installVB.sql 檔案。執行檔案中所包含的指令碼,或在命令提示字元中執行下列命令:
sqlcmd -E -I -i Scripts\InstallCS.sql
執行範例
若要執行模擬範例
在 [我的文件] 資料夾中建立名為 [測試] 的資料夾。
使用「記事本」在該資料夾中建立空白文字檔。
使用 [Windows 檔案總管] 中的 [屬性] 對話方塊來調整資料夾的安全性。
- 使用 [安全性] 索引標籤上的 [進階] 按紐,從資料夾父系停用資料夾安全性設定的繼承。
- 使用 [複製] 選項複製父系的安全性設定。
- 將自己做為具有資料夾完全權限的使用者加入。
- 移除所有其他使用者。
在 Management Studio 或「記事本」中,開啟 scripts\test.sql 檔案。修改該檔案,不再於
SELECT @TestDir
陳述式中呼叫GetEnvironmentVariable
方法,而是指定@TestDir
變數值的常數字串。程式碼應如下所示:SELECT @TestDir = 'C:\Documents and Settings\
username\My Documents\Test\'
以實際使用者名稱取代 username。
在 Management Studio 執行此指令碼或在「記事本」儲存已修改的檔案,然後在命令提示字元中執行下列命令:
sqlcmd -E -I -i Scripts\test.sql
移除範例
若要移除模擬範例
在 Management Studio 中,開啟 scripts\cleanup.sql 檔案。執行檔案中所包含的指令碼,或在命令提示字元中執行下列命令:
sqlcmd -E -I -i Scripts\cleanup.sql
註解
必須啟用 SQL Server 或 SQL Server Express 的 CLR,才能讓此範例正常運作。
範例只供教育目的之用。它們不能用於實際執行環境,而且尚未在實際執行環境中測試過。Microsoft不提供對這些範例的技術支援。若沒有系統管理員的權限,就不應該在生產 SQL Server 資料庫或報表伺服器上,連接或使用範例應用程式及組件。