一 入门
a.最好的资料是:

MSDN参考
http://www.microsoft.com/china/msdn/library/data/sqlserver/sqlclrguidance.mspx?mfr=true
WebCast视频
http://www.msdnwebcast.com.cn/CourseDetails.aspx?id=107

b.最好的方式是参考msdn或我写的快速入门动手做下

二 开发经验

a.在网上看的资料要看清楚版本,很多是Beta版的写法

b.开发优势是有CLR丰富的类库 ,VS2005的编译器,C#语言方面优势(比如用DataReader代替游标,抽取公用的方法),在内存管理方面优于扩展的存储过程,字符處理是編譯執行的效率比較高


c. 好像还是不支持调试远程的存储过程,看来开发这样的项目必须要先在本地数据库上有库才可以

d. 在做这个存储过程中,方法必须声明为静态变量

e.调试的时候,尽管已经是sqlserver2005 了,但是默认的的数据库基本还是8.0,需要 sp_dbcmptlevel 'corp_0201',90
 
不然就会有
Error 1 'EXTERNAL' 附近有语法错误。您可能需要将当前数据库的兼容级别设置为更高的值,以启用此功能。有关存储过程 sp_dbcmptlevel 的信息,请参见帮助。 CLR_prGetDocNoCom
的错误

以及:
必须启动CLR功能
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
 
   EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO

f.我电脑在公司已经配置算不错了有的时候打开sql studio和vs studio还是慢,看来确实需要大点的内存

g.用CLR写存储过程,只支持一个SqlConnection
我这样写代码都会有报错
 SqlConnection myConnection = new SqlConnection("context connection=true");
 SqlConnection myConnection1 = new SqlConnection("context connection=true");
 myConnection.Open();
 myConnection1.Open();
必须
using (SqlConnection con = new SqlConnection("context connection = true")) {
      con.Open();
      ...
  }
and
  using (SqlDataReader rdr = cmd.ExecuteReader()) {
      ...
  }
但是如果要在循环里再查询数据这个操作就郁闷了,只能通过以前的SQL游标来处理

h.发布的时候,默认是debug模式,最好能改为Release模式发布,这样效率高些

i.因为使用C#来开发,可以使用TestDriver和fxCop来测试一个个方法

g.编写出来的代碼結構教好
posted on 2007-02-27 14:58  jchdong  阅读(4042)  评论(7编辑  收藏  举报