Ошибка при установке "Администрируется по записям"

Доброго времени суток.
Возникла такая проблема. При установке галочки "Администрируется по записям" (как на базовых таблицах так и на новых) возникает ошибка:
Invalid column name "AdminUnitID"
Последние, что показывает профайлер - это вызов хранимой процедуры tsp_CreateDeleteTrigger.

Профайлер также показывает запрос на создание таблицы tbl_MyTableRight, но таблицы в БД нет(видимо происходит откат в процессе).
На этой базе кучу раз "перемапивали" пользователя Supervisor, возможно с этим проблема, но идей решения нет.
Подскажите с чем может быть связано такое внезапное поведение.

Нравится

20 комментариев

Юрий, у Вас MSSQL? Какой collation у сервера? Смею предположить, что регистрочувствительный?

Сервер:
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37
Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2
(Build 3790: Service Pack 2)

У БД collation : Cyrillic_General_CI_AS
у сервера collation : SQL_Latin1_General_CP1_CI_AS

Тут что-то не так?

Юрий, предпоследние две буквы(CI - case insensitive) - говорят что все нормально - ни база ни сервер не чувствительные к регистру.
А какая версия бинарников?

Версия бинарников: 3.2.2.3

Вы включатее логирование или нет?

Александр, простите за задержку с ответом.
По поводу логирования не очень понял вопрос. Файл лога *.ldf ведется, если вы об этом...

Юрий, я имел ввиду пункт "Отслеживать изменения" в дизайнере таблицы. Вы можете выложить трейс из профайлера(сохраните его в файл)?

"Отслеживать изменения" не включено, только "Администрируется по записям".
Выкладываю трейс.

Юрий, и выложите пожалуйста текст хранимки tsp_CreateDeleteTrigger.

Так она ваша, на нашей стороне точно не менялась.
Выкладываю файлом, а то там почти 300 строк.

А Вы выполняете это под кем? Какие права на сервере и базе данных? Вы видите под этим пользователем таблицу tbl_AdminUnit?

На сервере он serveradmin и sysadmin.
На БД роль: db_owner и т.д. схема: dbo

Все таблицы системы видны.. то есть он тотальный администратор.

Хотя вот новый симптом. Попытался создать поле в таблици tbl_AdminUnit - та же ошибка.
На этот раз ошибка при вызове:

exec sp_executesql N'exec [dbo].[tsp_LogTrigger] @P1, @P2, @P3, @P4, @P5',N'@P1 nvarchar(128),@P2 varchar(8000),@P3 varchar(8000),@P4 int,@P5 
nvarchar(128)',N'tbl_AdminUnit',NULL,NULL,0,N'dbo'

Вы можете выполнить эти два запроса?

CREATE TABLE [dbo].[tbl_MyTableRight] (
	[ID] UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL CONSTRAINT [PMyTableRightID] PRIMARY KEY NONCLUSTERED CONSTRAINT [PDFMyTableRightID] DEFAULT NEWID(),
	[RecordID] UNIQUEIDENTIFIER NULL,
	[AdminUnitID] UNIQUEIDENTIFIER NULL,
	[CanRead] INT NULL,
	[CanWrite] INT NULL,
	[CanDelete] INT NULL,
	[CanChangeAccess] INT NULL
)
GO
exec sp_executesql N'exec tsp_CreateDeleteTrigger @P1, @P2, @P3, @P4, @P5, @P6, @P7',N'@P1 varchar(250),@P2 int,@P3 varchar(8000),@P4 varchar(250),@P5 nvarchar(128),@P6 nvarchar(128),@P7 int','tbl_AdminUnit',0,NULL,NULL,N'AdminUnitID',N'tbl_MyTableRight',1
GO

"Осауленко Александр" написал:Вы можете выполнить эти два запроса?

Да. Таблица создается, но на хранимой процедуре следующий эффект:

(1 row(s) affected)
...
(1 row(s) affected)
Msg 207, Level 16, State 1, Line 17
Invalid column name 'AdminUnitID'.

А Вы не удаляли таблицы вручную из базы данных? Не через админ?

Найдите в таблице tbl_AdminUnit триггер tr_tbl_AdminUnit_ID. Откройте и попробуйте его сохранить.

"Осауленко Александр" написал:А Вы не удаляли таблицы вручную из базы данных? Не через админ?

Нет. Не помню, что б это когда-то требовалось.

"Осауленко Александр" написал:Найдите в таблице tbl_AdminUnit триггер tr_tbl_AdminUnit_ID. Откройте и попробуйте его сохранить.

Странно, но такого триггера вообще не было! был только на after insert.
Взял его с другой рабочей БД, но ошибка осталась...

Юрий, выполните запрос:

    select s.Code, sp.Value from tbl_Service s
    left outer join tbl_ServiceProperty sp on s.id = sp.ServiceID
    where (sp.Name = 'CascadeDelete')
    and (sp.Value like ('tbl_AdminUnit' + ',%'))
	and object_id(s.Code) is null

Что он вернет?

Запрос не вернул ничего...

Юрий, для дальнейшего решения данной проблемы необходим анализ имеющейся у Вас базы данных.
По данному вопросу заведен инцидент №057440.
Предоставьте пожалуйста Вашу базу сделав резервную копию БД (backUp), заархивируйте полученный файл(не забудьте установить пароль на архив) и выложите его на любой ФТП.
Пришлите на адрес support@tscrm.com письмо с темой 057440 и укажите в теле письма ссылку на ФТП и пароль на архив.

Служба технической поддержки Terrasoft.

Показать все комментарии