Доброго времени суток.
Возникла такая проблема. При установке галочки "Администрируется по записям" (как на базовых таблицах так и на новых) возникает ошибка:
Invalid column name "AdminUnitID"
Последние, что показывает профайлер - это вызов хранимой процедуры tsp_CreateDeleteTrigger.
Профайлер также показывает запрос на создание таблицы tbl_MyTableRight, но таблицы в БД нет(видимо происходит откат в процессе).
На этой базе кучу раз "перемапивали" пользователя Supervisor, возможно с этим проблема, но идей решения нет.
Подскажите с чем может быть связано такое внезапное поведение.
Нравится
Юрий, у Вас 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) - говорят что все нормально - ни база ни сервер не чувствительные к регистру.
А какая версия бинарников?
Александр, простите за задержку с ответом.
По поводу логирования не очень понял вопрос. Файл лога *.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.