我曾经在人民邮电出版社出版的《SQL Server2000 设计实务》中看到,建议用户在设计自己的存储过程时不要用"sp_"这样的字符开头,因为它是系统存储过程用的前缀格式,当用户把自己的存储过程起成这样的名字时,系统会先到master数据库中寻找,当找不到时才到相应的用户数据库中找,这样就会降低访问的效率。
可是我最近在看WROX出版的《ASP.NET Web站点高级编程》,发现里面用户定义的存储过程全都是"sp_"开头的,我相信这本书应该还是比较权威的,但是又不明白存储过程的命名到底是怎么样的。请高手指点迷津。

解决方案 »

  1.   

    错,不是这样的测试一下就知道,分别在用户数据库及master数据库里建下面的存储过程:
    CREATE PROCEDURE sp_test AS
    select * from sysfiles
    go然后分别连接两个数据库执行:exec sp_test
    结果返回的是所连接的数据库的信息,而不都是master数据库的信息
      

  2.   

    存储过程、表、视图等在命名上只要符合规则就行,没有特别的限制,在执行是都是先找当前数据库,若找不到才到master数据库里找
      

  3.   

    用户把存储器名写为 'SP_' 最要是方便全局调用!!就像全局变量一样阿!当然要写到master数据库下面!
      

  4.   

    《SQL Server2000 设计实务》中的建议比较好一些。虽然系统本身对存储过程名并没有限制,但习惯上sp_开头的是系统存储。自己的存储过程,还是以其他方式命名比较好。这样比较容易理解。比如说,订单处理的存储过程以orp_开头,客户相关的存储过程以csp_开头,这样,以后一看就知道是哪方面的程序。也可以虽然避免与万一与将来新版SQLServer的系统存储过程重名的问题。总的来说,存储过程命名和类名命名一样,尽量能让其他人望名而生义,不用猜。
      

  5.   

    回应pbsql(风云) :非常敬佩你的实践精神,我就没想到这么去测试一下,这回我也明白了.我刚来这里,我怎么把我的分给你啊?