Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
У меня есть некий код, размещённый в нескольких процедурах некоей базы. Этот код часто ссылается на другую базу [TheOtherBase]: Код: sql 1. И тд. Через некоторое время, возможно, базу [TheOtherBase] переименуют – ей дадут новое имя, например [TheOtherBaseNewName]. Как мне “легко и быстро” перестроить вышеупомянутый код, чтобы он стал работать с [TheOtherBaseNewName] вместо [TheOtherBase]? Сразу скажу что код ссылается на много разных таблиц из [TheOtherBase] – их штук 20. Можно вопрос сфомулировать и по другому - "ищу удобный способ так организовать мой код, чтобы потом легко и быстро менять имя базы [TheOtherBase] на [TheOtherBaseNewName]" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:03 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
динамический sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:07 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
KellyLynch, можно использовать синонимы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:09 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
для самой базы не получится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:10 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
Konst_Oneдля самой базы не получится понятное дело, но синонимы для объектов можно просто пересоздать с другим именем базы, когда понадобится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:15 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
Shakill, никогда раньше не пользовался....Вы про это: - https://docs.microsoft.com/en-us/sql/t-sql/statements/create-synonym-transact-sql ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:19 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
KellyLynchShakill, никогда раньше не пользовался....Вы про это: - https://docs.microsoft.com/en-us/sql/t-sql/statements/create-synonym-transact-sql ? да, про это создаете синонимы на объекты другой базы и в коде обращаетесь к этим объектам уже через синонимы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 14:21 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
либо через линкованный сервер. ПЫСЫ а вы уверены что базы "не уедут" с сервера? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 15:27 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
Гигабайт Мегабайтович Килобайтовлибо через линкованный сервер. ПЫСЫ а вы уверены что базы "не уедут" с сервера? )) "либо через линкованный сервер." - никогда не слышал раньше. Оно? - https://docs.microsoft.com/en-us/sql/relational-databases/linked-servers/linked-servers-database-engine ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 15:36 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
KellyLynch, linked server будет подключаться через "наружу". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 16:30 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
KellyLynch, USE [TheOtherBaseNewName] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 17:29 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
blonduserKellyLynch, USE [TheOtherBaseNewName] "USE [TheOtherBaseNewName]" помогло бы если б весь мой код был собран в один большой файл. Но как я говорил, он "разбросан" по многим процедурам. Согласен - это решение даст "определённый выигрыш" по сравнению с исходным кодом, где в каждой из процедур есть несколько конструкций "Select * FROM [ TheOtherBase ].[dbo].[TableName1]" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 20:44 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
KellyLynchblonduserKellyLynch, USE [TheOtherBaseNewName] "USE [TheOtherBaseNewName]" помогло бы если б весь мой код был собран в один большой файл. Но как я говорил, он "разбросан" по многим процедурам. Согласен - это решение даст "определённый выигрыш" по сравнению с исходным кодом, где в каждой из процедур есть несколько конструкций "Select * FROM [ TheOtherBase ].[dbo].[TableName1]" Создаешь подключение к серверу. Вызываешь USE [TheOtherBaseNewName]. И пока подключение активно все процедуры обращаются к указанной БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2018, 22:45 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
Может поможет http://www.sommarskog.se/dynamic_sql.html Get Data from another Database If you for some reason have your application spread over two databases, what you absolutely not should do is to have code that says: SELECT ... FROM otherdb.dbo.tbl JOIN ... This is bad, because if someone asks for a second environment on the same server, you have a lot of code to change. The best solution for this particular problem is to use synonyms, added in SQL 2005: CREATE SYNONYM otherdbtbl FOR otherdb.dbo.tbl You can then refer to otherdb.dbo.tbl as just otherdbtbl. If there is a need for a second set of databases, you only have to update the synonyms, and there is no need to use dynamic SQL. Yet a way to avoid dynamic SQL is to use stored procedures for all inter-database communication. That is, if you are in db1 and need to get data from db2, you call a stored procedure in db2. This can be dynamic, because EXEC permits you to specify a variable that holds the name of the procedure to execute. SELECT @dbname = quotename(dbname) FROM ... SELECT @sp = @dbname + '..some_sp' EXEC @ret = @sp @par1, @par2... If you want to get result sets back from db2, look at my article How to Share Data between Stored Procedures for suggestions. There may still be cases you may find that dynamic SQL is the only feasible situation. This can be done in two ways. The most obvious is: SELECT @dbname = quotename(dbname) FROM ... SELECT @sql = ' SELECT ... FROM ' + @dbname + ' .dbo.otherdbtbl ' + ' JOIN dbo.localtbl ... ' EXEC sp_executesql @sql, @params, ... But, if the query is complex, and most of the tables are in the remote database you can also do: SELECT @sql = ' SELECT ... FROM dbo.othertbl ' + ' JOIN ' + quotename(db_name()) + '.dbo.localtbl ... ' SELECT @dbname = quotename(dbname) FROM ... SELECT @sp_executesql = @dbname + '..sp_executesql' EXEC @sp_executesql @sql, @params, ... As above, I make use of that you can specify the procedure name dynamically with EXEC. The trick here is that when you specify a system stored procedure in three-part notation with the database name, the procedure executes in the context of that database. Thus, the dynamic SQL in this example runs in @dbname, not the current database. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 19:16 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
По бандитски. Мне пришлось переживать похожий момент. Идея не моя-босса, я её только озвучил в SQL. Cоздаётся Вью(View) с именем таблицы TableName1 в своей родной базе. Вью идёт туда, куда ему надо-в чужую базу. Если начнутся тормоза, можо обратиться к табличной функции-то же самое Вью, только с параметром. Приставка с именем базы из всех процедур выбивается. Когда начнутся завалы-меняете только Вью. Это легче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 10:29 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
А чтобы мне осталось время на ЮТУБ. Босс-душа человек, подкинул скрипт, как шукать объекты, зависимые от чужой базы. Прошло года 3, а скриптик-то сохранил. Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 10:47 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
KellyLynch, Просто проект должен лежать в SSDT/TFS, имя этой базы должно быть описано в одной из переменных. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 11:07 |
|
||
|
Ищу удобный способ менять имя базы в TSQL коде
|
|||
|---|---|---|---|
|
#18+
Предыдущие клиенты лет за 5 вот также налопатили баз 20, и все ссылаются друг на друга, один такой большой клубок. Даже сделали специальные базы, в которых и данных то нет, одни cross-reference процедуры и функции. А тут недавно в связи с новомодными веяниями сказали хотим все в облако, да не просто VM облаке, а Ажурные базы. За 6 месяцев дело не сдвинулось с мертвой точки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 19:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39628704&tid=1689765]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 399ms |

| 0 / 0 |
