none
如何將SQL-CLR部署在Client? RRS feed

  • 問題

  • 根據MSDN上的文章 “SQL Server CLR 整合簡介 http://msdn.microsoft.com/zh-tw/library/ms254498(VS.80).aspx ”,裡面提到了這一段:

    選擇在伺服器或用戶端上執行

    … … 現今大多數的用戶端電腦功能都非常強大,您可能想要將儘可能多的程式碼儲存到用戶端上,以利用其處理能力。Managed 程式碼可在用戶端電腦上執行,而 Transact-SQL 卻不能。

    這一句Managed 程式碼可在用戶端電腦上執行,代表SQL-CLR也可部署在Client上,請問該如何做?
    已讀了好幾份MSDN上相關的範例和開發指南都沒提到如何將SQL-CLR部署在Client的方法。
    謝謝。
    2009年3月18日 上午 03:00

解答

  • 大家好,
    感謝各位的回應,
    我想可以確定了,SQL-CLR只能部署到 SQL Server。而MSDN上這一段:
    SQL Server CLR 整合簡介 http://msdn.microsoft.com/zh-tw/library/ms254498(VS.80).aspx ”,
    -------------------------------------------------------------------------------------

    選擇在伺服器或用戶端上執行

    決定是使用 Transact-SQL 還是 Managed 程式碼的另一考量因素是,您想要將程式碼儲存於何處:伺服器電腦或用戶端電腦。Transact-SQL 及 Managed 程式碼均可在伺服器上執行。如此可將程式碼與資料緊密結合,並允許您利用伺服器的處理能力。另一方面,您可能希望避免將大量耗用處理器的工作置於資料庫伺服器。現今大多數的用戶端電腦功能都非常強大,您可能想要將儘可能多的程式碼儲存到用戶端上,以利用其處理能力。Managed 程式碼可在用戶端電腦上執行,而 Transact-SQL 卻不能。
    -------------------------------------------------------------------------------------

    看完後我的理解是,SQL-CLR 可以部署在 Server 也可以部署在 Client上。T-SQL 只能部署在 Server上。
    段落標題大喇喇的標著:「選擇在伺服器或用戶端上執行」。再加上最後一句「Managed 程式碼可在用戶端電腦上執行」,這裡的 “Manged程式碼”並沒有說不是 SQL-CLR。我是因此而理解錯誤。

    忍不住想建議一下,這一段文字是不是該調整一下。

    • 已標示為解答 RelyKy 2009年3月18日 上午 10:13
    2009年3月18日 上午 10:12

所有回覆

  • 你可能誤會意思了
    這篇文章寫得是SQL 2005/2008在某些功能能夠整合.Net,也就是說可以使用.Net寫出來的一些程式碼,譬如說SSIS中你可以透過.Net寫程式去呼叫Web Service,而此程式你可以寫成一個dll.
    這樣未來如果在Client寫AP時也有類似需求你就可以直接引用此dll,但 T-SQL沒辦法這樣做,T-SQL與SQL Server是綁定的.
    而通常SQL會用.Net的目的並不是為了可移植性,而是希望透過.Net做到一些TSQL無法做到的事,

    而文中有提到SQL應該有方式可以透過.Net將某些運算丟給Client的電腦執行,減低SQL Server Loading,這部分倒是沒有聽說過.或許有其他可以解答.
    猜想可能是TSQL可以呼叫用戶端的.Net Assembly然後將某些運算丟給用戶端電腦執行-純粹猜測.

    2009年3月18日 上午 08:23
  • 文章要從頭看到尾啊 ... 不要斷章取義。

    原文是:

    決定是使用 Transact-SQL 還是 Managed 程式碼的另一考量因素是,您想要將程式碼儲存於何處:伺服器電腦或用戶端電腦。Transact-SQL 及 Managed 程式碼均可在伺服器上執行。如此可將程式碼與資料緊密結合,並允許您利用伺服器的處理能力。另一方面,您可能希望避免將大量耗用處理器的工作置於資料庫伺服器。現今大多數的用戶端電腦功能都非常強大,您可能想要將儘可能多的程式碼儲存到用戶端上,以利用其處理能力。Managed 程式碼可在用戶端電腦上執行,而 Transact-SQL 卻不能。

    這整段只是在比較 Managed Code 和 T-SQL 的差異,並不是代表 SQL-CLR 可以布到用戶端...

    不過,如果用戶端是使用 SQL Server Express 的話,SQL-CLR 是可以安裝在 SQL Server Express 的資料庫中的。


    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年3月18日 上午 09:33
    版主
  • 大家好,
    感謝各位的回應,
    我想可以確定了,SQL-CLR只能部署到 SQL Server。而MSDN上這一段:
    SQL Server CLR 整合簡介 http://msdn.microsoft.com/zh-tw/library/ms254498(VS.80).aspx ”,
    -------------------------------------------------------------------------------------

    選擇在伺服器或用戶端上執行

    決定是使用 Transact-SQL 還是 Managed 程式碼的另一考量因素是,您想要將程式碼儲存於何處:伺服器電腦或用戶端電腦。Transact-SQL 及 Managed 程式碼均可在伺服器上執行。如此可將程式碼與資料緊密結合,並允許您利用伺服器的處理能力。另一方面,您可能希望避免將大量耗用處理器的工作置於資料庫伺服器。現今大多數的用戶端電腦功能都非常強大,您可能想要將儘可能多的程式碼儲存到用戶端上,以利用其處理能力。Managed 程式碼可在用戶端電腦上執行,而 Transact-SQL 卻不能。
    -------------------------------------------------------------------------------------

    看完後我的理解是,SQL-CLR 可以部署在 Server 也可以部署在 Client上。T-SQL 只能部署在 Server上。
    段落標題大喇喇的標著:「選擇在伺服器或用戶端上執行」。再加上最後一句「Managed 程式碼可在用戶端電腦上執行」,這裡的 “Manged程式碼”並沒有說不是 SQL-CLR。我是因此而理解錯誤。

    忍不住想建議一下,這一段文字是不是該調整一下。

    • 已標示為解答 RelyKy 2009年3月18日 上午 10:13
    2009年3月18日 上午 10:12
  • 看那麼多,花陸路的.
    總之T-SQL 要有 SQL Server 去翻譯去執行.
    CLR 要有 CLR 環境去執行.
    SQL-CLR 是 Manged程式碼 所以只要環境正確自然能執行.
    問題是 SQL-CLR 內容為何? 一支程式能不能正確的執行考量因素很多.
    假如 SQL-CLR 沒有用到 SQL 裡面的東西,他在哪裡都可執行.
    假如SQL-CLR 有參照到 SQL 裡面的類別,你還是要將 SQL 裡面的類別或DLL 複製到Client端.
    假如SQL-CLR 有參考到SQL 裡面的資料,你還是要複製資料到Client端
    總之要用到什麼,還是要把整體環境建置起來才可以用.
    2009年3月18日 上午 10:25