SQL Server 的工作方式, 是 客户端 - 服务器 的工作方式.就算 SQL SERVER 是安装的自己的电脑上的,数据库也存放在C盘但是你的机器上,实际上是运行了 2 个程序,一个是服务器程序,一个是 客户端程序。客户端 新建了存储过程, 实际上是把SQL代码, 发送给服务器程序。服务器程序 编译代码的有效性,并存储。假如 编译通过了, 那是可以运行的, 不管你数据库存在本机,还是存在服务器上面。至于你本地的那个红线,实际上是 客户端的 本地的模拟的 编译。客户端不管你代码是否正确,都是 发送给服务器那里去执行的。因此你 abc下有红线,提示找不到存储过程“abc”而 又能使用EXEC abc这个就是 客户端 认为 服务器上面,没有 abc 这个存储过程。但是你执行 EXEC abc客户端 是只能原样的把这句话,发给服务器如果 服务器那里,真的没有 abc 这个存储过程那么会返回 服务器的 错误提示。如果服务器有 abc 这个存储过程那么就会返回执行的结果。
原文 转 http://blog.sina.com.cn/s/blog_8e17040001012q26.html