|
|
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Как настроить QA чтобы он при компиляции хранимых процедур не проверял наличие таблиц, столюцов и т.п.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2002, 11:41:50 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
А по конкрентнее про "не проверял наличие таблиц, столюцов и т.п.". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2002, 15:25:35 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Гы - а QA ничего вообще то и не компилит. Потому ничего и не проверяет. Это забота SQLServer, а не Tools ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 05:19:19 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
2ASCRUS - Это понятно просто лень писать про это было... 2Glory - смысл в том что при компиляции процедуры содержащей строчку select column1, column2 ... into table1 from table2 сервер проверяет наличие таблицы table2, а затем наличие в ней указанных столбцов. У меня трабл с этим - дело в том что table2 постоянно меняется/удаляется/создается при чем не мной... вот и хотелось от этого отвязаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 06:23:13 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Механизм “Deferred Name Resolution” подразумевает проверку наличия всех запрашиваемых столбцов в таблице, если заправшиваемая таблица существует. Обойти это невозможно (если только не строить динамические запросы). Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 06:56:46 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Вы хотите сказать что скрипт вида alter procedure myproc ... AS ... select column1, column2 ... into table1 from table2 ... go в QA вызывает ошибку при отсутствии таблицы table2 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 08:20:25 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
2 Денис переходите с 6.5 на 7 или 2000 - там это не проверяется, к сожалению 2 Glory на 6.5 этот скрипт вызовет ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 11:39:56 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Я на 2000... и у меня это проверяется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 12:55:23 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
2Денис А compatibility level у вас для этой базы какой ? 2SergSuper Да, я наверное многое потерял, не "пообщавшись" с SQL 6.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 13:48:45 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
У меня сложилось впечатление, что если обьект существует, то обращение к его полям/параметрам проверяется, если не существует, то все просто компилится без разговоров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 14:02:29 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Я могу ошибаться, но по моему, SQL Server при компиляции процедуры сохраняет оптимизированный план выполненения её запросов, поэтому и требует наличия таблиц. К примеру, если я не ошибаюсь, при добавлении индекса к таблице которая участвует в запросе, необходимо пересобрать процедуру, что бы новый индекс стал использоваться. Соответственно, как мне кажется, наличие таблицы необходимо. Если действительно очень хочется написать процедуру обращающуюся к несуществующим таблицам, то делать это можно динамическим запросом, как правильно сказал jimmers. А вообще, прошу прощения, мне кажется, что решение вашей проблемы из области организации. Во всяком случае, у меня на работе, если кто взялся за изменение таблиц, то сам следит за процедурами связанными с этой таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 14:19:41 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, но по-моему мои слова не так поняли: существует т.н. механизм отложенного разрешения имен. Суть его в том, что если объект (в данном случае таблица) существует, то все опрашиваемые в этой таблице поля должны существовать также. Если таблица не существует, то, естественно, поля можно указать любые... Если же необходимо указать в запросе несуществующие столбцы для существующей таблицы, то здесь можно применить Dynamic SQL. Однако этот способ, на мой взляд, порочен по сути. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 14:29:45 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
Эх, так и думал, что ошибаюсь План то составляется при первом, после старта SQL Server'a, запуске... На 2000 я получил предупреждение о несуществующей таблице, при compatibility level 65, а при compatibility level 70-80 процедура создалась без предупреждения... Так что извините за ошибку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 14:54:24 |
|
||
|
Query Analyzer!!!
|
|||
|---|---|---|---|
|
#18+
К сказанному jimmers могу лишь добавить, что ошибки обращения к полям таблицы, несуществующим на момент создания/изменения процедуры можно избежать, если вместо таблицы обращатся к представлению. Тогда при изменении структуры таблицы, пока не произведено обновление представления, процедуры можно будет создавать, ссылаясь на "старые" поля \nuse pubs go if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[my_table]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[my_table] GO create table [dbo].[my_table] (f1 int, f2 int) go if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[my_view]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[my_view] GO create view [dbo].[my_view] as select f1, f2 from my_table go if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[my_proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[my_proc] GO create procedure [dbo].[my_proc] as select f1, f2 from my_view go alter table my_table drop column f2 go alter procedure [dbo].[my_proc] as select f1, f2 from my_view go Только вот не вижу необходимости так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2002, 14:59:03 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32031526&tid=1822536]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
192ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 537ms |

| 0 / 0 |
