2012-03-04 74 views
7

我已經在SQL Server中編寫了一個存儲過程。我想在SQL Server 2008中隱藏存儲過程的腳本

現在它只是我不希望任何人看到我的腳本或編輯它。

請記住,我正在使用標準登錄ID和密碼。 哪一個與每個人共享。

因此,我可以允許每個人執行程序的某種方式。 但他們不應該看到腳本。

乾杯! 謝謝

+0

而不是加密你應該修復你的安全。沒有理由讓每個人都擁有相同的權利登錄。 – HLGEM 2012-03-05 15:59:26

回答

7

您正在尋找WITH ENCRYPTION,該加密你的存儲過程後面的代碼。

CREATE PROCEDURE usp_MyProc 
WITH ENCRYPTION 
AS 
SELECT * 
FROM myTable 

只是一個警告,從MSDN:

用戶誰擁有對系統表或數據庫文件沒有訪問不能檢索模糊文本。但是,這些文本將提供給特權用戶,他們可以通過DAC端口訪問系統表或直接訪問數據庫文件。

一些參考和進一步閱讀:

+0

另外,SQL Server中的「WITH ENCRYPTION」實際上應該叫做WITH WITH MINOR_OBFUSCATION。如果你知道你在尋找什麼,那裏有足夠的資源來幫助解密一個系統對象,並且它們不限於特權用戶或DAC。 – 2012-03-04 14:49:26

+0

誠然,這不會阻止某個決心看到代碼的人,但它會阻止大多數人。 – 2012-03-04 16:21:21

2

使用存儲過程的encryption關鍵字。這將隱藏代碼:

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END 
+0

任何人都可以運行SP,對吧?只是代碼隱藏 – LearnByReading 2016-11-10 21:28:31

+0

這是正確的。 – 2016-11-10 21:35:40

3

SQL Server不真正爲保護模塊代碼萬無一失的方法。 WITH ENCRYPTION子句應該按照WITH LOOSE_OBFUSCATION的順序命名,因爲「加密」很容易被阻止。你不能在SQL Server中使用任何東西來讓代碼無法被任何人破解 - 除非是最隨意的旁觀者 - 任何人都可以在不打破汗水的情況下擊敗本地方法。

雖然這可能足夠滿足您的需求,但可能更安全的方式(但仍不完美)是將部分或全部過程的業務邏輯into the CLR (read more here)

相關問題