使用 Managed 程式碼建立資料庫物件的好處

更新:2007 年 11 月

除了使用 Transact-SQL 程式語言以外,還可以使用 .NET Framework 語言來建立資料庫物件,以及擷取和更新 Microsoft SQL Server 2005 資料庫的資料。在 Visual Basic、Visual C# 或 Visual C++ 專案中,您可以建立預存程序 (Stored Procedure)、觸發程序 (Trigger)、彙總 (Aggregate)、使用者定義函式和使用者定義型別。

注意事項:

根據預設,Microsoft SQL Server 中的 Common Language Runtime (CLR) 整合功能已關閉。您必須啟用它,才能使用 SQL Server 專案項目。若要啟用 CLR 整合,請使用 sp_configure 預存程序的 clr enabled 選項。如需詳細資訊,請參閱啟用 CLR 整合

相較於使用 Transact-SQL,以下清單摘要列出了使用 .NET Framework 語言的優點:

  • 增強型程式撰寫模型:.NET Framework 語言提供 SQL 開發人員之前無法使用的建構方式和功能。

  • 強化的安全及安全性:Managed 程式碼是在資料庫引擎所裝載的 Common Language Runtime 環境中執行。比起舊版 SQL Server 所使用的延伸預存程序,這可讓 .NET Framework 資料庫物件更安全且更穩定。

  • 使用者定義型別和彙總:使用者定義型別和使用者定義彙總是兩個新的 Managed 資料庫物件,它們可擴充 SQL Server 的儲存和查詢功能。

  • 通用開發環境:資料庫開發整合到 Microsoft Visual Studio 開發環境中。開發人員用來開發與偵錯資料庫物件和指令碼的工具,與他們用來撰寫中介層或用戶層的 .NET Framework 元件和服務的工具是一樣的。

  • 更佳效能:就效能而言,有些函式 (例如,對資料庫中每個資料列執行算術運算的函式) 若是從 Visual Basic、Visual C# 或 Visual C++ 專案建置成編譯組件,其效能會優於以 Transact-SQL 撰寫的解譯程式碼。例如,函式 (尤其是執行整數運算的函式) 的效能會提升。不過,只存取資料的預存程序則不會提高效能。

  • 語言豐富性:Visual Basic、Visual C# 和 Visual C++ 提供 Transact-SQL 所沒有的功能,例如陣列、複雜的例外處理和程式碼重複使用。

  • 程式碼重複使用:比起散發 Transact-SQL 指令碼,Managed 組件的程式庫能更加容易地建立及散發。

  • 擴充性:您可以使用 Visual Basic、Visual C# 或 Visual C++ 建立 Transact-SQL 所無法建立的兩個資料庫物件:彙總和使用者定義型別。

  • 使用現有的技術:您可以使用並加強熟悉的語言和開發環境技術,以建立資料庫物件。

  • 更豐富的開發人員經驗:當您使用 SQL Server 專案範本開發資料庫物件時,便能擁有專案系統的完整整合。包括建置、偵錯和多重伺服器的部署。

  • 穩定性和可靠性:相較於延伸預存程序 (可能產生記憶體遺漏,或其他降低伺服器效能和可靠性的問題),使用 Visual Basic、Visual C# 或 Visual C++ 所建立的資料庫物件會更安全、穩定、穩固和可靠。當您執行以 Visual Basic、Visual C# 或 Visual C++ 所建立的預存程序時,由於記憶體管理和執行緒並不是由預存程序執行,因此處理方式會更穩固。

  • 安全性:當您使用以 Visual Basic、Visual C# 或 Visual C++ 所建立的資料庫物件時,這些語言的程式碼存取安全性便結合 SQL Server 中以使用者為基礎的權限。

預存程序和觸發程序

預存程序是先行編譯的程式設計陳述式集合,它們會在資料庫中執行作業,並且以一個名稱儲存及當做一個單位處理。如需預存程序的詳細資訊,請參閱 SQL Server 文件。

觸發程序是某種特殊的預存程序,它會在您使用一或多項資料修改作業 (UPDATE、INSERT 或 DELETE),於指定資料表內修改資料時啟動。如需觸發程序的詳細資訊,請參閱 SQL Server 文件。

Visual Basic、Visual C# 和 Visual C++ 的語言豐富性增強了預存程序和觸發程序的開發作業,尤其適用於實作強制使用商務規則時所需的複雜程序邏輯。此外,.NET Framework 包含許多程式庫。最重要的是這些程式庫可讓您管理許多密碼編譯層面、龐大的數學程式庫,以及對 Web 服務、檔案和企業對企業 (B2B) 通訊系統的外部存取。

函式

函式會針對一個或多個值作業,以傳回純量值或資料表。如需 Transact-SQL 程式設計語言所提供函式型別的詳細資訊,請參閱 SQL Server 文件。

就像預存程序和觸發程序一樣,函式的開發作業也因 Visual Basic、Visual C# 和 Visual C++ 語言豐富性而有所增強,並且可以存取 .NET Framework 所包含的許多程式庫。

彙總

彙總函式可用來摘要列出資料表中的所有資料。彙總函式會針對一組值執行計算,並傳回單一純量值。如需 Transact-SQL 程式設計語言所提供彙總函式的詳細資訊,請參閱 SQL Server 文件。

若要補充這些彙總函式,您可以定義新的彙總,以便執行更複雜的算術函式。例如,您可以針對多個資料列的資料執行計算,並傳回一個值或建立串連字串。

使用者定義型別

型別會指定資料的性質。如需 SQL Server 所提供系統資料型別集的詳細資訊,請參閱 SQL Server 文件。

您可以使用 Visual Basic、Visual C# 和 Visual C++ 來定義新型別,從此不再侷限於 SQL Server 所提供的預先定義型別。您可以建立簡單型別,例如郵遞區號,或更複雜型別,以剖析信用卡交易所傳回的資訊。此外,當您使用使用者定義型別時,資料可以同時在 SQL 用戶端和 SQL Server 上進行解譯和管理。透過使用 ADO.NET,您就可以從 SQL Server 下載包含型別定義的組件,並且在 SQL 用戶端使用它來檢查資料。

請參閱

工作

HOW TO:建立 SQL Server 專案

HOW TO:建立及執行 CLR SQL Server 預存程序

HOW TO:建立及執行 CLR SQL Server 觸發程序

HOW TO:建立及執行 CLR SQL Server 彙總

HOW TO:建立及執行 CLR SQL Server 使用者定義函式

HOW TO:建立及執行 CLR SQL Server 使用者定義型別

逐步解說:使用 Managed 程式碼建立預存程序

HOW TO:偵錯 SQL CLR 預存程序

概念

SQL Server CLR 整合簡介 (ADO.NET)

使用 Managed 程式碼建立資料庫物件的好處

SQL Server 專案的項目範本

參考

SQL Server 專案和資料庫物件的屬性

其他資源

SQL CLR 資料庫偵錯