【问题标题】:The "Invalid object name ..." error appears in one server but no in the other one“无效的对象名称...”错误出现在一台服务器上,但没有出现在另一台服务器上
【发布时间】:2018-04-25 14:57:43
【问题描述】:

我有一个有线的情况。下面的代码在一台服务器上运行良好,但在另一台服务器上运行良好。两台服务器上的数据库兼容性级别相同。我使用的是 sql server 2016。

;USE MyDB;
GO
--exec MyDB.dbo.sp_Cleanup_Bid5YearData
ALTER PROCEDURE dbo.sp_Cleanup_Bid5YearData

AS 

DECLARE @date VARCHAR(10), 
        @cmdIf NVARCHAR(200),
        @cmd NVARCHAR(4000)

SET @date = CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '_' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '_' + CAST(DAY(GETDATE()) AS VARCHAR(2)) 

IF OBJECT_ID('tempdb..#Id_ToBeRemoved') IS NOT NULL --SELECT 1

   DROP TABLE #Id_ToBeRemoved;

CREATE TABLE #Id_ToBeRemoved
    (
        Id INT PRIMARY KEY NOT NULL, 
        Code CHAR(3) NOT NULL 
    );

INSERT INTO #Id_ToBeRemoved (Id, Code)
VALUES(12,'TMB'),
      (13,'FGR');

IF EXISTS (SELECT TOP 1 1 FROM #Id_ToBeRemoved) 

SET @cmd = ('

;USE MyDB;

IF EXISTS (SELECT 1 FROM [MyDB].dbo.Table_5YearData_'+@date+') 

    DROP TABLE [MyDB].dbo.Table_5YearData_'+@date+';

;USE MyDB;

SELECT 
    Id, 
    Code
INTO [MyDB].dbo.Table_5YearData_'+@date+'
FROM  #Id_ToBeRemoved; 
         ')

EXEC sp_executesql @cmd;
--EXEC (@cmd);
--select * from  [MyDB].dbo.Table_5YearData_2018_4_25 -- you may need to change the ending of the table "2018_4_25" depending on the date you run this statement 

我得到的错误信息是:

消息 208,第 16 级,状态 1,第 7 行
无效的对象名称'bidNotification.dbo.Table_5YearData_2018_4_25'

【问题讨论】:

    标签: sql sql-server-2008 invalid-object-name


    【解决方案1】:

    您的第二个数据库中不存在表 bidNotification.dbo.Table_5YearData_2018_4_25。您的查询检查表中是否有行而不是表是否实际存在。仅当该表已存在时,您的查询才有效。

    您可以修改并改为使用OBJECT_ID() 来验证该表是否存在。

    SET @cmd = ('
    
    ;USE MyDB;
    
    IF OBJECT_ID(N''[MyDB].dbo.Table_5YearData' + @date + ''', N''U'') IS NOT NULL
    
        DROP TABLE [MyDB].dbo.Table_5YearData_'+@date+';
    
    ;USE MyDB;
    
    SELECT 
        Id, 
        Code
    INTO [MyDB].dbo.Table_5YearData_'+@date+'
    FROM  #Id_ToBeRemoved; 
             ')
    

    【讨论】:

    • 很棒的提示 SQLChao!我很感激。
    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 2013-12-10
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多