2013-10-02 27 views
6

Ben B.mytable den B.mytablebackup tüm satırları yedeklemek istiyorum saklı yordam başında db A ve db B'yi var. Saklı yordamın geri kalanı db A'daki tablolara karşı çalışır (verileri toplar ve B.mytable'a yazar).Tablonun varlığını farklı bir sql db'den nasıl denetlenir?

yüzden B.mytablebackup

IF EXISTS(SELECT 1 FROM B.dbo.mytablebackup) 

olup olmadığını görmek için kontrol edin ve eğer bunun bir

SELECT * INTO B..mytablebackup from B..mytable 
yapar yoksa, saklı yordam bir

INSERT INTO B..mytablebackup SELECT * FROM B..mytable 

yapar

Ancak saklı yordamı yürüttüğümde

hatasını aldım

zaten ben Print ifadeyi eklendi ve icra IF dalı "yok" alıyor veritabanı

yılında 'mytablebackup' adlı bir nesne yok.

Neyi yanlış yapıyorum?

+1

*** SQL *** sadece * Yapılandırılmış Sorgu Dili * - birçok veritabanı sistemi tarafından kullanılan bir dil değil, bir veritabanı ürünüdür ... birçok şey satıcıya özgüdür - bu yüzden gerçekten ihtiyacımız var ne ** veritabanı sistemi ** (ve hangi sürümü) kullandığınızı biliyorsanız (lütfen etiketleri şu şekilde güncelleştirin) .... –

+1

@marc_s MSSQL 'db.schema.tbl' biçiminde – Kermit

+2

'IF EXISTS temelli olduğunu tahmin ediyorum (SELECT 1 FROM B.dbo.mytablebackup) '' mytablebackup' içinde en az bir satır * olup olmadığını kontrol eder. ** değil ama yaptığın kolay olsaydı - Tahminimde için - emin: Tablo kendisi * var olup olmadığını Bu –

cevap

10

SQL Server için masa varlığının kontrol edilmesi sistem görünümü sys.tables kullanmalıdır.

IF EXISTS(SELECT 1 FROM B.sys.tables WHERE name = 'mytablebackup') 
+0

Teşekkürler Eric. Bu hile yaptı. – DeveloperM