Jayanta Modak Ответов: 1

Показать ошибку.... Как скопировать процедуру хранения одну на другую базу данных тот же сервер


Как скопировать процедуру хранения из одной базы данных в другую на том же сервере

Я работаю над проектом. Я хочу скопировать всю или единственную процедуру хранения из старого финансового года db_17_18 к новому финансовому году db_18_19 Я хочу сделать это с помощью команды sql server. я пытаюсь это сделать, но показываю ошибку, пожалуйста, помогите мне....
я использовал :
SQL_Server 2008 r2
название сервера : shop04

Что я уже пробовал:

попробуйте 1
select * into DB_18_19.dbo.P_Add_FY_Data.procedures from DB_17_18.P_Add_FY_Data.procedures WHERE  type_desc='SQL_STORED_PROCEDURE'


Error1 :
Msg 117, Уровень 15, Состояние 1, Строка 1
Имя объекта "DB_18_19.dbo.P_Add_FY_Data.procedures" содержит больше максимального количества префиксов. Максимум-2.

попробуйте 2
select * into DB_18_19.dbo.P_Add_FY_Data.procedures from DB_2017_2018.P_Add_FY_Data.procedures


Error2 :
Msg 117, Уровень 15, Состояние 1, Строка 1
Имя объекта "DB_18_19.dbo.P_Add_FY_Data.procedures" содержит больше максимального количества префиксов. Максимум-2.

попробуйте 3
select * into DB_18_2019.dbo.P_Add_FY_Data from DB_17_18.P_Add_FY_Data


Error3 :
Msg 208, Уровень 16, Состояние 1, Строка 1
Недопустимое имя объекта 'DB_2017_2018.P_Add_FY_Data'.


попробуйте 4
select * into DB_18_19.dbo.P_Add_FY_Data from DB_17_18.P_Add_FY_Data WHERE  type_desc='SQL_STORED_PROCEDURE'


Error4 :

Msg 208, Уровень 16, Состояние 1, Строка 1
Недопустимое имя объекта 'DB_17_2018.P_Add_FY_Data'.

RedDk

Я думаю, что лучшая идея, или то, что я обычно делаю, когда копирую stoproc из одной базы данных в другую,-это щелкнуть правой кнопкой мыши целевую процедуру и выбрать "Изменить". Затем процедура откроется в редакторе, и я могу изменить слово "ALTER" на "CREATE" ... а затем сохранить его как скрипт .sql. Запустите его в целевой базе данных (той, что без нее).

Обычно есть несколько других вещей, которые также могут быть добавлены в целевую базу данных, возможно, схема и любая ссылка, которая была в исходной базе данных.

Jayanta Modak

Спасибо сэр за ответ
На самом деле я использовал эту команду sql в vb.net 2010 год. когда пользователь нажимает на кнопку Создать новую БД, нажав на кнопку, после этого автоматически копируются все таблицы и баланс книги запасов, а также процедура и функция хранения. когда я копирую процедуру хранения, то сталкиваюсь с проблемой.
я думаю, что лучшая идея, или то, что я обычно делаю, когда копирую stoproc из одной базы данных в другую,-это щелкнуть правой кнопкой мыши целевую процедуру и выбрать "Изменить". Затем процедура откроется в редакторе, и я могу изменить слово "ALTER" на "CREATE" ... а затем сохранить его как скрипт .sql. Запустите его в целевой базе данных (той, что без нее)." но пользователь не может
пожалуйста, помогите мне, сэр.

RedDk

Хорошо. Итак, я думаю, вы хотите сказать, что у пользователя нет разрешения на изменение хранимой процедуры? Тогда мой вопрос => "зачем пользователю нужно изменять хранимую процедуру?" Если вы говорите, что пользователь не может запустить stoproc, я бы сказал, что нет смысла копировать все stoproc в целевую базу данных.

[РЕДАКТИРОВАТЬ]
Может быть, я что-то неправильно понял. Попробуй... Выберите * из sys.procedures ... и посмотрите, появится ли требуемое имя процедуры в списке результатов. В нынешнем виде это предложение кажется подозрительным.
[КОНЕЦ РЕДАКТИРОВАНИЯ]

Jayanta Modak

Я хочу менять базу данных каждый финансовый год.
Если я изменю базу данных и скопирую только всю таблицу, то как запустить процедуру хранения? Потому что хранимая процедура хранится в базе данных. Пользователь не имеет права изменять какую-либо часть программы проекта и не имеет доступа к базе данных.


Имя хранимой процедуры является правильным и хранится в базе данных "db_17_18

RedDk

Хорошо. Я только что рассказал вам, как скопировать хранимую процедуру из одной базы данных в другую. На ваш вопрос есть ответ. Извини, но я не могу помочь тебе с этим новым материалом.

ZurdoDev

Вы понимаете эту ошибку? - содержит больше, чем максимальное число префиксов. Максимум-2."

Jayanta Modak

Да сэр тогда я воспользовался этим
выберите * в DB_18_19.dbo.P_Add_FY_Data из DB_17_18.dbo.P_Add_FY_Data

ZurdoDev

Тогда нет, вы этого не понимаете. Как вы думаете, что означает DB_18_19.dbo.P_Add_FY_Data из DB_17_18.dbo.P_Add_FY_Data?

Это должно быть databasename.schema.tableorview. У тебя слишком много периодов.

Jayanta Modak

о! Извините, сэр . пожалуйста, простите меня, я плохо знаю английский. извиняюсь.
Я скопировал все свои таблицы в этом процессе. Итак, я думаю, что процесс копирования хранимых процедур такой же.
Пожалуйста, помогите мне, сэр.... как скопировать хранимую процедуру

1 Ответов

Рейтинг:
1

RedDk

Как скопировать хранимую процедуру.

1. Откройте MSSQL Server Management Studio

2. Найдите в Обозревателе объектов базу данных, в которой находится хранимая процедура. Он будет расположен в базе данных treeview под именем вашей базы данных снова в разделе "программируемость", а затем снова в разделе "хранимые процедуры"

3. Посмотрите и посмотрите на вещь, которую вы хотите скопировать, и обратите внимание, что у нее также есть схема, которая также может быть скопирована таким же образом, и эта схема находится в разделе "Безопасность" и снова в разделе "схемы".

4. щелкните правой кнопкой мыши хранимую процедуру, которую вы хотите скопировать, и выберите пункт "Изменить". Это приведет к тому, что некоторые TSQL в виде файла .sql станут видимыми в вашем редакторе. Обратите внимание, что предложение "USE" указывает, что весь этот блок кода как бы прикреплен только к вещам, реализованным в этой базе данных, из которой копируется эта хранимая процедура. Также обратите внимание, что ссылка на схему также "жестко закодирована". И, наконец, посмотрите слова, связанные с тем, что вы только что сделали с помощью мыши, когда решили изменить постоянную хранимую процедуру ... "ALTER PROCEDURE" ... вот где вам придется сделать "вилку", так сказать, кода.

5. Сохраните этот кодовый блок. sql "alter procedure". Прежде чем вы сохраните его в качестве новой копии .sql хранимой процедуры исходной базы данных, находящейся в редакторе, он будет называться "SQLQuery1.sql". Сохраните его как "Huzzah_StoredProcedureOne_ALTER_copy.sql". Закройте SQLQuery1.sql без сохранения. Откройте файл "Huzzah_StoredProcedureOne_ALTER_copy.sql".

6. Теперь вам нужно изменить ключевое слово ALTER на CREATE, очевидно, потому что вы собираетесь запустить этот скрипт для создания процедуры в какой-то другой базе данных, чтобы получить код в холке программируемости этой базы данных. Попытка изменить процедуру, которой не существует, не будет работать.

7. Сохранить изменения-заменил-с-создать скрипт как "Huzzah_StoredProcedureOne_CREATE.в SQL".

8. Теперь проверьте в целевой/новой базе данных, что схема существует в разделе SECURITY/SCHEMAS. Если это не так, вам нужно будет добавить несколько строк где-нибудь, чтобы создать схему, чтобы при запуске новой хранимой процедуры она не ошибалась (это то, что я имею в виду, когда копирую схему (на самом деле это не копия, не так ли?)). И конечно, я предполагаю, что все, что вы ссылаетесь на таблицы и все остальное, что вы якобы преуспели в "копировании" в эту новую базу данных, также присутствует.

9. нажмите F5, как только вам удалось все это отсортировать, и теперь ваша хранимая процедура должна быть очевидна ... и... опять же тоже изменчиво.

Если эти шаги все еще висят, обязательно включите сообщения об ошибках, которые сопровождают их, когда вы отправляете вопросы, как вы делали это раньше. Это делает сужение места, где неудача, кажется, болтается легче.