成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

修改SQL Server 2005執行環境實例演示

數據庫 SQL Server
以下的文章主要描述的是正確對SQL Server 2005執行環境進行修改是實際操作的實例演示,以下就是正文的主要內容的詳細解析。

此文主要是介紹正確對SQL Server 2005執行環境進行修改是實際操作的實例演示,正如我上一篇文章里所介紹的一樣,改變存儲過程的SQL Server 2005數據庫的執行環境非常有用,接下來我將通過實例來講解如何實現這一功能。

在這個例子中,您會看到如何使用EXECUTE AS將沒有確切權限的使用者模擬為所有者對表格進行插入操作。

在第一行語句中,我使用了REVERT命令,這樣,您就可以完整地返回到例子中,而不必擔心需要清除任何對象。

  1. REVERT   
  2. GO   

在下面的代碼的第七行,我使用了清除語句,這樣可以檢查我在隨后的例子中要使用的對象是否已經存在,如果已經存在,就將其清除。

 

  1. IF OBJECT_ID('usp_InsertMyTable','P')>0   
  2. DROP PROCEDURE usp_InsertMyTable   
  3. GO   
  4. IF OBJECT_ID('TableOwnerSchema.MyTable','U')>0   
  5. DROP TABLE TableOwnerSchema.MyTable   
  6. GO   
  7. IF EXISTS   
  8. (SELECT * FROM sys.schemas WHERE name = N'TableOwnerSchema')   
  9. DROP SCHEMA [TableOwnerSchema]   
  10. IF EXISTS   
  11. (SELECT * FROM sys.database_principals WHERE name = N'BaseUser')   
  12. DROP USER BaseUser   
  13. IF EXISTS   
  14. (SELECT * FROM sys.server_principals WHERE name = N'BaseUser')   
  15. DROP LOGIN BaseUser   
  16. IF EXISTS   
  17. (SELECT * FROM sys.database_principals WHERE name = N'TableOwner')   
  18. DROP USER TableOwner   
  19. IF EXISTS   
  20. (SELECT * FROM sys.server_principals WHERE name = N'TableOwner')   
  21. DROP LOGIN TableOwner   

以下的腳本語句創建了兩個登錄名和數據庫的用戶賬戶,注意,CHECK_EXPIRATION和CHECK_POLICY語句,這兩條語句是SQL Server 2005中新出現的。這些語句告訴SQL Server不要對這個用戶賬戶強制執行密碼截止期限策略,同時也不要進行任何類型的密碼策略檢查,對于強制安全策略而言,這些是非常有效的方法。

 

  1. CREATE LOGIN [BaseUser] WITH PASSWORD=N'baseuser',   
  2. DEFAULT_DATABASE=[TRS],   
  3. CHECK_EXPIRATION=OFFCHECK_POLICY=OFF   
  4. GO   
  5. CREATE USER [BaseUser] FOR LOGIN [BaseUser]   
  6. GO   
  7. CREATE LOGIN [TableOwner] WITH PASSWORD=N'tableowner',   
  8. DEFAULT_DATABASE=[TRS],   
  9. CHECK_EXPIRATION=OFFCHECK_POLICY=OFF   
  10. GO   
  11. CREATE USER TableOwner FOR LOGIN TableOwner   
  12. GO   

在SQL Server 2005中,模式不再是和數據庫用戶相同的事情了,對于所包含的對象而言,它處于完全不同的名稱空間。用戶和模式的分離是SQL Server 2005中的一大進步,這樣做使對象的所有權可以分離,而且比SQL Server 2000更易于管理,以下的語句創建了我們將要使用的數據庫模式:

 

  1. CREATE SCHEMA [TableOwnerSchema] AUTHORIZATION [TableOwner]   
  2. GO   
  3. Now I enable logins so they can be used:   
  4. ALTER LOGIN [TableOwner] ENABLE   
  5. ALTER LOGIN [BaseUser] ENABLE   
  6. GO   
  7. GRANT CREATE TABLE TO TableOwner   
  8. GO   

首先,我使用了EXECUTE AS命令,我將當前的SQL Server 2005執行環境設定為TableOwner,在運行了這個命令之后,所有的權限評估將以TableOwner運行,而以前的系統管理員權限將不再適用。

  1. EXECUTE AS USER = 'TableOwner'   
  2. GO   

運行這個語句就能夠表明現在的SQL Server 2005執行環境是TableOwner:

 

  1. SELECT SESSION_USER   
  2. GO   

這個腳本將在TableOwnerSchema的模式中創建一個名為MyTable的表格,因為我已經賦予了該用戶CREATE TABLE 的權限,所以TableOwner可以執行這條語句。

 

  1. CREATE TABLE TableOwnerSchema.MyTable   
  2. (   
  3. Field1 INT   
  4. )   
  5. GO   

當我運行REVERT語句的時候,可以在SQL Server 2005執行環境鏈中回退一步,在SQL Server 2005中,執行環境是可以嵌套的,所以如果您在同一個數據庫連接中有很多用戶在運行,您可能需要多次執行該語句以返回到原始的登錄環境。

 

  1. REVERT   
  2. GO   
  3. SELECT SESSION_USER   
  4. GO   

現在我要對新的表格進行快速選擇以確認它的存在:

 

  1. SELECT * FROM TableOwnerSchema.MyTable   
  2. GO  

以下的腳本創建了一個過程可以插入新的TableOwnerSchema.MyTable表格,注意我在過程定義中使用了WITH EXECUTE AS 'TableOwner'語句,這意味著該過程被執行的時候,它將在TableOwner的執行環境中被執行。

 

  1. CREATE PROCEDURE usp_InsertMyTable   
  2. WITH EXECUTE AS 'TableOwner'   
  3. AS   
  4. BEGIN   
  5. INSERT INTO TableOwnerSchema.MyTable(Field1)VALUES(8)   
  6. END   
  7. GO   

我還可以將執行權限賦予一個用戶賬戶,在這種情況下,我使用以前創建的名為BaseUser的用戶。

 

  1. GRANT EXEC ON usp_InsertMyTable TO BaseUser   
  2. GO   

接下來,我將SQL Server 2005執行環境轉換為BaseUser并嘗試運行存儲過程:

 

  1. EXECUTE AS USER = 'BaseUser'   
  2. GO   
  3. EXEC usp_InsertMyTable   
  4. GO   

現在我可以向TableSchema.MyTable表格中添加記錄了,因為在這個過程中TableOwner允許我這樣做,而BaseOwner并沒有明確的權限可以向該表格添加記錄,所以該用戶的任何嘗試都會導致錯誤的發生。為了演示這個問題,可以運行以下的腳本,該腳本改變了我們剛才的過程,改為運行在調用者的SQL Server 2005執行環境中。

 

  1. REVERT   
  2. GO   
  3. ALTER PROCEDURE usp_InsertMyTable   
  4. AS   
  5. BEGIN   
  6. INSERT INTO TableOwnerSchema.MyTable(Field1)VALUES(8)   
  7. END   
  8. GO   
  9. EXECUTE AS USER = 'BaseUser'   
  10. GO   
  11. EXEC usp_InsertMyTable   
  12. GO   
  13. REVERT  

開發者和數據庫管理員會發現在執行存儲過程的時候轉換權限非常有用,尤其是您處理TRUNCATE TABLE語句的時候,這個方法能幫上大忙,因為TRUNCATE TABLE并沒有可以指定的權限。您可以將權限賦予將要進行截取表格操作的用戶,然后在操作結束的時候再將原有的權限設定恢復就可以了。

【編輯推薦】

  1. SQL Server選擇索引之查詢VS 的性能修改
  2. SQL Server非聚集索引概述
  3. 用SQL Server索引密度對行數進行評估
  4. 關于SQL Server索引密度的知識
  5. SQL Server索引直方圖的內容描述
責任編輯:佚名 來源: 網絡轉載
相關推薦

2010-06-30 13:19:17

SQL Server

2010-07-16 14:17:18

SQL Server

2010-07-06 15:22:00

SQL Server

2010-07-20 17:36:55

SQL Server

2010-09-03 10:40:30

SQL刪除

2010-07-16 09:57:44

SQL Server

2010-07-14 10:03:40

SQL Server

2010-06-28 11:00:46

SQL Server

2010-07-21 09:50:12

SQL Server子

2010-07-05 15:04:36

SQL Server刪

2010-06-18 10:25:49

SQL Server

2010-09-09 16:10:57

sql server2循環

2011-07-06 13:09:11

SQL Server

2010-07-09 14:30:56

SQL Server

2010-07-22 09:33:45

SQL Server全

2010-07-23 18:39:52

SQL Server游

2010-07-21 17:07:42

SQL Server

2009-10-23 10:08:29

SQL SERVER

2009-12-02 16:41:33

Visual Stud

2011-08-22 09:55:30

SQL Server 排序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人午夜精品影院游乐网 | 黄色片免费看视频 | 草久久| 亚洲一区二区三区四区视频 | 亚洲激情在线 | 在线观看中文字幕dvd播放 | 日批日韩在线观看 | 国产99久久精品 | 欧美极品在线 | 欧美一级二级三级 | 精品国产91久久久久久 | 久久久久久久一级 | 天天摸天天干 | 久久av一区 | 成人免费av在线 | 中文字幕亚洲一区二区三区 | 日本一二三区在线观看 | 国产精品亚洲一区二区三区在线 | 国产成人jvid在线播放 | 色婷婷婷婷色 | 国产精品久久久久久238 | 日韩免费视频一区二区 | 久久精品视频网站 | 亚洲毛片在线观看 | 日韩成人在线免费视频 | 精品国产免费人成在线观看 | 91麻豆精品一区二区三区 | 在线免费观看黄色网址 | 国产在线网站 | 国产精彩视频 | 日韩福利 | 中文字幕一区二区三区精彩视频 | 免费观看成人性生生活片 | 成人国产精品免费观看 | 亚洲在线一区二区 | 91免费看片| 欧美激情视频一区二区三区免费 | 日韩av一区二区在线观看 | 国产精品国产精品国产专区不片 | 午夜日韩 | 在线观看视频你懂得 |