التحقق من أجل وإسقاط جدول موجود عبر C # و SMO
سؤال
أحاول البحث عن جدول 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'))
لا تنتمي إلى StackOverflow