Как изменить имя таблицы при создании скрипта для таблицы из SQL Server SMO

Допустим, у меня есть таблица "foo", которую я хочу создать с помощью SMO. Есть ли способ сделать так, чтобы в сгенерированном скрипте таблица имела другое имя, например "foo2"?

Database db = sqlServer.Databases["testdb"];
Table foo = db.Tables["foo"];
foo.Name = "foo2";

Если я это сделаю, я получаю это исключение, когда пытаюсь установить foo.Name:

«Невозможно выполнить операцию с этим объектом, потому что объект является членом коллекции».

Есть ли способ сделать это с помощью SMO?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 626
3

Ответы 3

Вам нужно будет поместить вывод метода Script в строковую переменную и использовать Replace для замены имени.

Кажется рискованным, поскольку имя таблицы может быть подстрокой других объектов (столбцов и т. д.).

wnka 17.01.2009 00:29

Верно, но, вероятно, это можно обойти с помощью НАЙТИ «СОЗДАТЬ ТАБЛИЦУ foo» ЗАМЕНИТЬ «СОЗДАТЬ ТАБЛИЦУ foo2», чтобы избежать попадания в столбцы. Но тогда вам, возможно, придется выполнить несколько замен, чтобы попасть в ограничения и индексы. Не уверен, что они написаны отдельно. Давно не играл с SMO.

John Mo 17.01.2009 16:13

Имя таблицы будет сразу после первого «CREATE TABLE» в скрипте.

RBarryYoung 03.06.2009 10:53

Вы можете создать новую таблицу в памяти с новым именем, а затем создать скрипт для этой таблицы.

Вы можете найти код для копирования таблицы на Копирование таблицы с помощью SMO

Вместо вызова Create () для новой таблицы вам нужно просто вызвать Script ().

Для людей вроде меня, которые пытаются узнать, как переименовать столбец с помощью SMO, если вы используете тот же метод, что и выше

foo.Name = "foo2";

вы получите такое же сообщение об исключении в этой цепочке. Чтобы переименовать столбец, вам просто нужно перейти

foo.Rename("foo2");

Подробнее см. MSDN:

Другие вопросы по теме