التحقق من أجل وإسقاط جدول موجود عبر C # و SMO

StackOverflow https://stackoverflow.com/questions/928346

  •  06-09-2019
  •  | 
  •  

سؤال

أحاول البحث عن جدول SQL بالاسم وإذا كان موجودا في إسقاطه. يجب القيام بذلك كل هذا في C # باستخدام SMO.

لتعقيدها أكثر قليلا، يحتوي الجدول أيضا على مخطط آخر ثم "DBO".

في نهاية المطاف، سيتم إعادة إنشاء الجدول عبر SMO (لدي هذا العمل) ولكني لا بد لي من التأكد من أنه ليس هناك قبل أن أتمكن من إعادة إنشاء ذلك.

يبدو أن جميع الأمثلة التي رأيتها هي خلق ثم إسقاط الطاولة في نفس السياق. في حالتي، سيتم إنشاء الجدول وتسجيله في جلسة سابقة.

هل كانت مفيدة؟

المحلول

السؤال الأول هو، لماذا لا يمكنك إسقاط وإعادة إنشاء DDL؟

وفي الإجابة على سؤالك:

Table table = new Table(myDatabase, "MyTable", "MySchema");

نصائح أخرى

var connection = new SqlConnection(connectionString);
var server = new Server(new ServerConnection(connection));

db = server.Databases["YourFavDB"];

db.Tables["YourHatedTable"].Drop();

أعتقد أن أفضل نهج سيكون:

Microsoft.SqlServer.Management.Smo.Database myDataBase = myServer.Databases["myDataBaseName"];
bool tableExists= myDataBase.Tables.Contains("myTable");
if (tableExists)
{
   myDataBase.Tables["myTable"].Drop();
}

لا يمكن أن تلتف فقط عبارة قطرة المرور الخاصة بك في كتلة TRY / CATCK، وتجاهل أي أخطاء تحدث؟

على أي حال، SQL لتحديد ما إذا كان الجدول موجود هو:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top