none
sp_MSforeachdb,如何给非系统库添加同一表 RRS feed

  • 问题

  • 如图,我判断db_id>4为非系统库,但字符太长了。不知咋解决

    附源码

    EXEC sp_MSforeachdb @command1 = "if DB_ID('?')>'4'
    BEGIN
    USE ?;
     CREATE TABLE [dbo].[Log](
        [Id] [int] IDENTITY(1,1) NOT NULL,
        [Date] [datetime] NOT NULL,
        [Exception] [varchar](2000) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    END
    "

    2014年4月16日 8:41

答案

  • T-SQL里面,字符串分隔符是单引号,不是双引号。引号里面再有引号,是用两个引号代替。

    所以,你的代码应该是

    EXEC sp_MSforeachdb @command1 = 'if DB_ID(''?'')>4
    BEGIN

    …………

    END'


    想不想时已是想,不如不想都不想。

    2014年4月16日 14:54
    版主

全部回复

  • Maybe use sp to create table then you call sp and pass db name with sp_MSforeachdb?
    2014年4月16日 12:57
  • T-SQL里面,字符串分隔符是单引号,不是双引号。引号里面再有引号,是用两个引号代替。

    所以,你的代码应该是

    EXEC sp_MSforeachdb @command1 = 'if DB_ID(''?'')>4
    BEGIN

    …………

    END'


    想不想时已是想,不如不想都不想。

    2014年4月16日 14:54
    版主
  • 写段脚本遍历动态产生USE DBNAME+GO,再Create Table

    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com

    2014年4月18日 0:34