Проверка наличия и удаление существующей таблицы с помощью 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();
}

Не могли бы вы просто обернуть свой оператор DROP TABLE в блок try / catch и удалить все возникающие ошибки?

В любом случае, 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