Ich schrieb unsere Entwicklungsdatenbank lokal. Die Stored-Prozeduren in unserer App haben überall Code, der überprüft, ob eine Tabelle existiert, und falls dies der Fall ist, löscht sie die Tabelle und erstellt sie neu. Ich habe festgestellt, dass wenn ich den Code in meiner lokalen Datenbank ausführe, dass die Überprüfung, um zu sehen, ob die Tabelle vorhanden ist, nicht das gleiche wie wenn in Entwicklung ausgeführt wird. Insbesondere habe ich festgestellt, dass OBJECTPROPERTY (ID, N'IsUserTable ') bei lokaler Ausführung NULL zurückgibt, aber in DEV 1 zurückgibt.Inkonsistente Ergebnisse: "Wählen Sie * aus sysobjects wobei ID = Objekt_ID (N'TableName ') und OBJECTPROPERTY (ID, N'IsUserTable') = 1"
if exists (select * from [CLASS].DBO.sysobjects where ID = object_ID(N'[CLASS].DBO.[CDB_SCRB_CLIENT_ACCOUNT]') and OBJECTPROPERTY(ID, N'IsUserTable') = 1)
BEGIN
PRINT 'EXISTS!'
drop table [CLASS].DBO.[CDB_SCRB_CLIENT_ACCOUNT]
END
ELSE PRINT 'NO!'
GO
CREATE TABLE [CLASS].DBO.[CDB_SCRB_CLIENT_ACCOUNT] (
[CLIENT_ID] [bigint] NULL ,
[CLIENT_Name] [char] (70) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[GOC] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[AC_DATE] [datetime] NULL ,
[EFF_Date] [datetime] NULL ,
[AC_STATUS] [char] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[REPORTING_DATE] [datetime] NULL,
[V2V_IND] [char] (1) NULL, --2017.10
[LAST_OPER_ID] [char] (8) NULL,
[LAST_TIMESTAMP] [datetime] NULL
) ON [PRIMARY]
GO
NO!
Msg 2714, Level 16, State 6, Line 2
There is already an object named 'CDB_SCRB_CLIENT_ACCOUNT' in the database.
.
Ich weiß, dass wenn ich den Scheck ändern
if exists (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CDB_SCRB_CLIENT_ACCOUNT]') AND type in (N'U'))
drop table [CLASS].DBO.[CDB_SCRB_CLIENT_ACCOUNT]
folgt, dass es funktionieren wird, aber ich will nicht nur viele Vorkommen dieses Codes ändern, zu laufen die App in meiner lokalen Datenbank.
SELECT @@version --on dev server
Microsoft SQL Server 2012 (SP3-CU7) (KB3205051) - 11.0.6579.0 (X64)
Dec 22 2016 11:18:09
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
SELECT @@version --on local workstation
Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64)
May 4 2015 18:48:09
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Wenn ich die Tabellen in jeder Tabelle scripte, scheinen sie die gleichen zu sein. Was könnte den Unterschied erklären?
Haben Sie diese Antwort angesehen: http: //dba.stackexchange.com/a/27953 – Forty3