powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Странное поведение SQL 2000
11 сообщений из 11, страница 1 из 1
Странное поведение SQL 2000
    #32064546
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if object_id('dbo.f_My') is not null
drop function dbo.f_My
go

create function dbo.f_My()
returns int
as
begin
return 1
end
go

if object_id('dbo.vvv') is not null
drop view dbo.vvv
go

create view dbo.vvv
as
select o.* from sysobjects o
join syscolumns c on c.id = dbo.f_My()

union all

select o.* from sysobjects o
join syscolumns c on c.id = dbo.f_My()
go


-- select @@version


Microsoft SQL Server 2000 - 8.00.665 (Intel X86)
Jul 29 2002 15:02:32
Copyright (c) 1988-2000 Microsoft Corporation
Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 2)

Я все сказал :)
Объясните мне 913 ошибку в этом контексте! :)
Хелпы щаз сам интенсивно рою... Нужна альтернатива в указанном синтаксисе...
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064551
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А поподробнее можно про ошибку
Полный текст
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064558
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В msdn - аналогично и никаких советов.

Error 913
Severity Level 22
Message Text
Could not find database ID %d. Database may not be activated yet or may be in transition.

Explanation
This error can occur if there is a problem with the view resolution process. During execution of various compiled objects in a database that references the database dbid (such as stored procedures and views), it is typical to resolve the dbid with other structures within the database. When a compiled object is first created, the dbid where the object is located is embedded in the compiled code. For example, when a view is accessed or a stored procedure is executed, the rights to access the view or execute the stored procedure are checked.

Action
If the error occurs when a stored procedure or view is accessed, you may be able to correct the problem by simply dropping and re-creating the database object (stored procedure or view).

If this error continues to occur, contact your primary support provider and have the Microsoft® SQL Server™ error log and any additional information relevant to the circumstances when the error occurred available for review.

Я, на самом деле уже выкрутился :) Перенеся ВСЕ соединение внутрь функции. То есть теперь у меня не скаляр, а табличка вылезает из фунцейки и я с ней все соединяю. Но вот как только кому-то одной строки будет мало, так сразу будут проблемы с переливами туда/сюда... Меня понятно? :)
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064600
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, глюк. Срочно звоните в микрософт...

А вот так работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create view dbo.vvv
as
select o.name
from sysobjects o
join syscolumns c on  1 = 1 
where c.id = dbo.f_My()
union
select o.name
from sysobjects o
join syscolumns c on  1 = 1 
where c.id = dbo.f_My()
go
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064607
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос правда безсмысленный....
используй так.... да ошибку правильно давал....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create view dbo.vvv1 
as 
select o.* from sysobjects o 
join syscolumns c on c.id = dbo.f_My() 
go
create view dbo.vvv2 
as 
select o.* from sysobjects o 
join syscolumns c on c.id = dbo.f_My() 
go
create view dbo.vvv3 
as 
select * from dbo.vvv1 
union all
select * from dbo.vvv2
go
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064674
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу отправят платить за саппортовый контракт. На самом деле предложили еще одно решение:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create view dbo.vvv
as
select o.name
from sysobjects o, syscolumns c 
where c.id = dbo.f_My()
union
select o.name
from sysobjects o, syscolumns c
where c.id = dbo.f_My()
go


Хотя, с точки зрения выполнения это не совсем то, что хотелось бы...
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064677
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему с точки зрения выполнения это не совсем то? Одинаковые-же запросы...
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064681
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только гипотетически одинаковые.....там все связанно с вычиляемыми столбцами и схемой базы.....
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064682
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только гипотетически одинаковые.....там все связанно с вычиляемыми столбцами и схемой базы.....
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064688
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, запросы ПОЛНОСТЬЮ одинаковые.
Конструкции
from sysobjects o, syscolumns c where c.id = dbo.f_My()
и
from sysobjects o1 join syscolumns c1 on c1.id = dbo.f_My()
ничем не отличаются.
...
Рейтинг: 0 / 0
Странное поведение SQL 2000
    #32064690
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и что?......
сделайте процедуру как в первом примере....
должна быть та же ошибка....
поправте меня если я ошибаюсь.... ;))
опять обращаю Ваше внимание на вычисляемые столбцы в таблицах.....
посмотрите что там за функции.....
и поймите что для сервера union all - это не делимая операция....
о теперь переделаем процедуру...
сольём все в две разные таблицы и уже потом объеденим....
примерно тоже происходит и с вьхами........
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Странное поведение SQL 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]