Share via


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

除了使用 Transact-SQL 程式語言以外,還可以使用 .NET Framework 語言來建立資料庫物件,以及擷取和更新 SQL Server 資料庫的資料。 在 Visual Basic 或 Visual C# 專案中,您可以建立預存程序、觸發程序、彙總、使用者定義函式和使用定義型別。 以 Managed 程式碼撰寫的資料庫物件稱為 SQL Server Common Language Runtime 物件或 SQL CLR 物件。

注意事項注意事項

預設會關閉 SQL Server 中的 Common Language Runtime (CLR) 整合功能。 您必須啟用 CLR 整合,才能使用 SQL Server 專案項目。 若要進行這項作業,請使用 sp_configure 預存程序的 clr enabled 選項。 如需詳細資訊,請參閱 Microsoft 網站上的 clr enabled 選項主題。

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

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

  • 強化的安全及安全性:Managed 程式碼是在資料庫引擎所裝載的 Common Language Runtime 環境中執行。 比起舊版 SQL Server 所使用的延伸預存程序,這可讓 .NET Framework 資料庫物件更安全且更穩定。 當您使用以 Visual Basic 或 Visual C# 所建立的資料庫物件時,這些語言的程式碼存取安全性便結合 SQL Server 中以使用者為基礎的權限。

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

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

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

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

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

  • 可擴展性使用Visual Basic或Visual C#您可以創建兩個不能通過使用創建的資料庫物件Transact-SQL:聚合和使用者定義的類型。

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

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

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

預存程序和觸發程序

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

觸發器是一種特殊的修改使用一個或多個資料修改操作指定表中的資料時被啟動的存儲過程:更新、 插入或刪除。 您也可以建立會引發以回應資料定義語言 (DDL) 陳述式的資料庫層級觸發程序。 這些觸發程序可以用來執行資料庫中的系統管理工作,例如稽核和規範資料庫作業。 如需觸發程序的詳細資訊,請參閱 SQL Server 文件。

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

功能

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

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

彙總

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

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

使用者定義型別

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

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

請參閱

工作

HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案

HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 預存程序

HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 觸發程序

HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 彙總

HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 使用者定義函式

HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 使用者定義型別

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

HOW TO:偵錯 SQL CLR 預存程序

參考

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

概念

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

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