Я застрял в следующей хранимой процедуре, в которой я не могу заставить работать детали IF EXISTS
и DROP
, что приводит к сбою в детали SELECT INTO
.
И база данных A, и база данных B находятся на одном сервере, у меня есть полные разрешения в обеих базах данных. Хранимая процедура находится в базе данных A.
Я скопировал синтаксис IF EXISTS
откуда-то (не могу вспомнить, где), поэтому я не совсем понимаю его структуру. Я понял, что проблема заключается в операторе IF EXISTS
, потому что, когда я пытаюсь выполнить компонент IF EXISTS
хранимой процедуры, я получаю что-то, если выбрал DatabaseB в раскрывающемся списке в верхнем левом углу в Management Studio, но если У меня там выбрана база данных А, я ничего не получаю.
Я также пытался запускать хранимые процедуры с аналогичной структурой в базе данных DatabaseA (где есть операторы IF EXISTS и DROP, указывающие на DatabaseB, за которыми следует SELECT INTO from DatabaseA into DatabaseB
), и некоторые из них мне приходилось работать раньше, в то время как некоторые другие не выполнялись. Кажется, я не могу точно определить, что заставляет его работать иногда, а иногда нет.
USE [DatabaseA]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--DROP TABLE A if exists--
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'DatabaseB.dbo.TableA') AND type IN (N'U'))
DROP TABLE DatabaseB.dbo.TableA
--Select INTO TableA on DatabaseB--
SELECT *
INTO DatabaseB.dbo.TableA
FROM DatabaseA.dbo.TableA