CREATE procedure qqq asCreate Database aaa
Exec('Select * Into aaa..bbb From bbb')目的就是动态创建一个数据库aaa,然后将现有的表bbb插入其中,这个过程首次能够正确执行,但删除aaa库后,再次执行便会在插入bbb表的语句出现一个意外错误,只有重新启动SQL Server才能正常执行,实在让人无法理解。请教各位有无办法解决这个问题。

解决方案 »

  1.   

    首先你出现的这个问题是因为数据库已经存在造成的,因为你所使用的这个语句只能动态创建数据表,而不能创建数据库可以在前面加个判断来实现对数据库的创建
    比如:
    --创建数据库
    IF EXISTS (SELECT * 
       FROM   master..sysdatabases 
       WHERE  name = N'<database_name, sysname, test_db>')
    DROP DATABASE <database_name, sysname, test_db>
    GOCREATE DATABASE <database_name, sysname, test_db>
    --判断数据表是否存在if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[表名]
    GO
      

  2.   

    请仔细看一下我对问题的描述,也请试验一下,数据库存在的话,报的错误就不是意外错误了,和重启动SQL Server也没有什么关系啊。