powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему это работало в 7 а в 2К нет?
5 сообщений из 5, страница 1 из 1
Почему это работало в 7 а в 2К нет?
    #32011496
Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа,
представленный код (не спорю что он корявый и можно куда лучше накрапать) предназначался для пересчета всех записей во всех таблицах базы данных (на случай необновленной статистики в последней).
На 7-ке этот код исправно генерил вполне сносный репорт, и все были довольны. Но вот днями проставил инстанс 2000-го, а заодно третью паку к 7. И теперь он меня кастерит (думаю заслуженно) - но все равно никак не могу заставить работать.
Мнение сообщества и совокупный опыт будут как нельзя более полезны.
Заранее благодарен.

declare @name sysname
declare @sqlstat nvarchar(250)
print 'Row counting performed on ' + cast(getdate() as varchar)+ '.'
print 'Inspecting ' + upper(db_name()) +' database on ' + upper(isnull(@@servername, 'local')) + ' server.'
declare @tables int
select @tables = count(name) from sysobjects where type = 'u'
print 'Current database contains ' + cast(@tables as varchar) + ' user defined table(s):'
declare rowcountintables cursor
for
select name from sysobjects where type = 'u' order by name
open rowcountintables
fetch next from rowcountintables into @name
while @@fetch_status = 0
begin
set @sqlstat = N'declare @rows int' + char(13)
set @sqlstat = @sqlstat + N'select @rows = count(*)'
set @sqlstat = @sqlstat + N'from ['+ cast(@name as nvarchar) + N']'+ char(13)
set @sqlstat = @sqlstat + N'print "Table ' + cast(@name as varchar)
set @sqlstat = @sqlstat + N' has "+ cast(@rows as varchar) +" row(s)."' --ПРОБЛЕМА ГДЕ-ТО ЗДЕСЬ
exec sp_executesql @sqlstat
fetch next from rowcountintables into @name
end
deallocate rowcountintables
go
...
Рейтинг: 0 / 0
Почему это работало в 7 а в 2К нет?
    #32011500
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"он меня кастерит" - а подробнее?
...
Рейтинг: 0 / 0
Почему это работало в 7 а в 2К нет?
    #32011501
MSSQL не всегда лояльно относится к двойным кавычкам. Лучше переписать код так, чтобы в строку попали только одинарные кавычки с помощью CHAR(39).
Хотя можешь еще потыркаться с настройкой
SET QUOTED_IDENTIFIER { ON | OFF }
...
Рейтинг: 0 / 0
Почему это работало в 7 а в 2К нет?
    #32011504
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
set @sqlstat = @sqlstat + N'print ''Table ' + cast(@name as varchar)
set @sqlstat = @sqlstat + N' has ''+ cast(@rows as varchar) +'' row(s).'''

Как правильно заметил Глеб Уфимцев проблема была в двойных кавычках их надо заменит на 2 одинарных
...
Рейтинг: 0 / 0
Почему это работало в 7 а в 2К нет?
    #32011506
Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>alexeyvg
Server: Msg 128, Level 15, State 1, Line 1
The name 'Table ACCT has ' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
Server: Msg 128, Level 15, State 1, Line 1
The name 'Table ACCT_EXT_XREF has ' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
и т.д. и т.п. на каждую таблицу
>Глеб Уфимцев и Glory
Завидую Вашему интеллекту и опыту - сработало, черт бы ее подрал!
Спасибо!!!
Искренне ....
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему это работало в 7 а в 2К нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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