it's well known.microsoft sql server是不允许在存储过程或触发器中使用use数据库语句来改变当前数据库的。
怎么办呢?当然可以直接用[databasename].[user].[tablename]这样来访问,但是某些语句必须在当前数据库下执行,比
如sp_adduser等。
这里提供一个解决方案:
使用exec(ute)语句来改变当前数据库,不过要注意的是,数据库环境的更改只在execute语句结束前有效,所以你必须把
后面的语句和execute放到一起。example:
create proc test
as
exec('use pubs') exec sp_adduser 'test'
go
--written by 怡红公子@chinaasp.com
--http://www.chinaasp.com
exec test
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器