не указывать название БД в MSSQL Studio в запросах

356ft85

как избавиться от необходимости в SQL запросах каждый раз вбивать название БД и схемы
SELECT g.*, N.*, P.* FROM [DataBase].[dbo].table1 g
LEFT JOIN [DataBase].[dbo].table2 N ON N.p1=g.p1
LEFT JOIN [DataBase].[dbo].table3 P ON P.p2=g.p2

Maurog

как избавиться от необходимости в SQL запросах каждый раз вбивать название БД и схемы
гугл?
http://stackoverflow.com/questions/4942023/set-default-schem...

korsika

как избавиться от необходимости
А откуда возникает необходимость указывать?

hprt

Когда не указываешь, к какой базе коннектишься, например. Тогда берется дефолтная база пользователя, по-умолчанию, master

356ft85

А откуда возникает необходимость указывать?
если не указывать то матерится:
SELECT *
FROM [News]
---------------------------------
Msg 208, Level 16, State 1, Line 2
Invalid object name 'News'.

356ft85

USE { database }http://technet.microsoft.com/en-us/library/ms188366.aspx
выполнил
USE DataBase в одном из окон MS SQL Managment Studio
но всё равно получаю ошибку в любой другом запросе Msg 208, Level 16, State 1, Line 2
Invalid object name 'Table'.
Попробовал ввести USE DataBase.dbo но ругается на такую команду
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.

hprt

ну так надо в том окне, где дергаешь выполнять. Если в SSMS дергаешь - выбери в выпадающем списке сверху просто

356ft85

Если в SSMS дергаешь - выбери в выпадающем списке сверху просто
да, это помогает, но стоит открыть новую вкладку - и там опять написано master. (сбрасывается на дефолтное видимо)

hprt

разумеется, потому что открывается новый коннект. Если тебя это так парит, пропиши своему пользователю дефолтную базу

6yrop

да, это помогает, но стоит открыть новую вкладку - и там опять написано master. (сбрасывается на дефолтное видимо)
новая вкладка открывается с той базой, которая сейчас текущая. Например, если набрать use db1, и открыть новую вкладку, то на новой будет тоже db1. Еще пример, если в дереве Object Explorer поставить курсор на базу и открыть новую вкладку, то текущей будет та база, на которой стоял курсор.

356ft85

новая вкладка открывается с той базой, которая сейчас текущая. Например, если набрать use db1, и открыть новую вкладку, то на новой будет тоже db1. Еще пример, если в дереве Object Explorer поставить курсор на базу и открыть новую вкладку, то текущей будет та база, на которой стоял курсор.
похоже оба утверждения не верны.
1) выполнил USE database1; затем открыл новую вкладку. всё равно выбран master (

2) Поставил курсор на одну из таблиц базы db1 , тыкнул по ней правой кнопкой, выбрал Select Top 1000 Rows для открытия новой вкладки - та же фигня, выбрана всё равно база master.

hprt

Все он правильно тебе сказал. Я уж не знаю, как ты там вкладки открываешь, но все, что написал верно (если открывать через New Query). Всякие Select Top 1000 Rows - да, открываются в мастере

356ft85

Всякие Select Top 1000 Rows - да, открываются в мастере
понятно. тогда основной вопрос - как сделать чтоб Select Top 1000 Rows открывался именно в той базе, для таблицы которой я и выполняю Select Top 1000 Rows ?

hprt

Есть подозрение, что никак, хотя не интересовался. Этой функциональностью пользуюсь крайне редко

Kira

в автоматически создающихся запросах название базы и схемы прописывается. Набери тоже самое без них руками и все будет работать.

356ft85

Этой функциональностью пользуюсь крайне редко
У меня довольно частый юз-кейс - тыкнуть SELECT Top 1000 Rows и в сгенеренный запрос начать писать JOIN-ы
вот и приходится в каждом ждойне копипастить схему. потому и вопрос возник..
видимо придётся переучиваться на NewQuery и копипастинг из окна SELECT Top 1000 Rows в окно NewQuery
тупо конечно, раз по другому никак :(

hprt

У меня довольно частый юз-кейс - тыкнуть SELECT Top 1000 Rows и в сгенеренный запрос начать писать JOIN-ы
вот и приходится в каждом ждойне копипастить схему. потому и вопрос возник..
видимо придётся переучиваться на NewQuery и копипастинг из окна SELECT Top 1000 Rows в окно NewQuery
тупо конечно, раз по другому никак
ну хз. Если все равно джойны пишешь, не проще ли запрос с самого начала писать в чистом окне? Подумаешь, на одну таблицу больше прописать. Лучше поставь плагины типа SSMS Tools или SSMSBoost, чтоб быстрее запросы набирать, а не пользуйся этой фичой - она только для того, чтоб быстро посмотреть, какие данные в таблице есть, что с указанными выше плагинами все равно делается намного проще
Оставить комментарий
Имя или ник:
Комментарий: