报错是:  
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'FROM' 附近有语法错误。
SELECT * INTO DB_100001101.DBO.XT_KMB_1000011012001 FROM CCYT_AUDIT.DBO.XT_KMB_1000011012001
服务器: 消息 8630,级别 16,状态 77,行 1
内部查询处理器错误: 查询处理器在执行过程中遇到意外错误。

解决方案 »

  1.   

    try:--定义变量
    DECLARE @iCount int
    DECLARE @strTbName varchar(50)
    DECLARE @strXMDB VARCHAR(20)
    DECLARE @i int
    DECLARE @SQL nvarchar(4000)--定义游标
    DECLARE cursor_TbBak CURSOR FOR
    SELECT NAME FROM CCYT_AUDIT..SYSOBJECTS WHERE XTYPE='U'
    OPEN cursor_TbBak
    --变量初始化
    SET @strXMDB='DB_100001101'
    SET @i=0IF EXISTS(SELECT * FROM MASTER.DBO.SYSDATABASES WHERE NAME = @strXMDB )
    BEGIN
            SET @SQL='DROP DATABASE '+ @strXMDB
    EXEC(@SQL)
    --EXEC('CREATE DATABASE '+ @strXMDB )
    END USE master
    CREATE DATABASE DB_100001101
    ON 
    ( NAME = Sales_dat,
        FILENAME = 'D:\program files\microsoft sql server\mssql\data\saledat.mdf',
        SIZE = 100,
        MAXSIZE = 500,
        FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
        FILENAME = 'D:\program files\microsoft sql server\mssql\data\salelog.ldf',
        SIZE = 50MB,
        MAXSIZE = 250MB,
        FILEGROWTH = 50MB )
            SET @iCount=(SELECT COUNT(*) FROM CCYT_AUDIT..SYSOBJECTS WHERE XTYPE='U' )
            WHILE @i<@iCount
             BEGIN
               SET @SQL='SELECT * INTO '+ @strXMDB +'.DBO.'+@strTbName+' FROM CCYT_AUDIT.DBO.'+ @strTbName 
               EXEC(@SQL)
       FETCH NEXT FROM cursor_TbBak INTO @strTbName
               SET @i=@i+1
             ENDclose cursor_TbBak
    DEALLOCATE cursor_TbBak
      

  2.   

    在from 前加个空格看看。可能你用了这么多的变量和++,出现一些不可知的错误。