Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
reactor-rector
Member

Откуда: Украина, Харьков
Сообщений: 9
Доброе время суток всем чатера!
Обрисую поставленую задачу. Значит необходимо произвести отслеживание изменения данны в SQL Server 2008 над таблицей "InventoryStudents" в БД "Job1".
Ниже привожу скрип создания, заполнения и настроки системы отслеживания. Вопрос заключаеться в слдующем: когда наводишь курсор на процдуру cd.fn_cdc_get_all_changes_HR_InventoryStudents подчеркивается красной волнистой, выдает, что имя объекта не допустимо.
Все делал на примерах в MSDN, когда пытаюсь вполнить эту процедуру выдает следующее сообщение:
Сообщение 208, уровень 16, состояние 1, строка 5
Недопустимое имя объекта "cd.fn_cdc_get_all_changes_HR_InventoryStudents".


[color=blue]CREATE TABLE[/color] [color=green]InventoryStudents[/color]
(ID int dentity(1,1) not null primary key[/color],
 StudentsName varchar(200) not null,
 StudyYear smallint null); 

INSERT INTO  InventoryStudents (StudentsName, StudyYear) VALUES
('Ivanov', 1), ('Ivanova', 5), ('Petrov', 2), ('Sidorov', 4), ('Gorin', 5)
 
USE Job1;
 
GO
EXECUTE sys.sp_cdc_enable_db;
SELECT DISTINCT is_cdc_enabled FROM sys.databases WHERE name='Job1'
GO
EXECUTE sys.sp_cdc_disable_db;
GO
EXECUTE sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'InventoryStudents',
    @role_name = N'cdc_Admin',
    @capture_instance = N'HR_InventoryStudents',
    @supports_net_changes = 1,
    @filegroup_name = N'PRIMARY';
GO
EXECUTE sys.sp_cdc_help_change_data_capture 
    @source_schema = N'dbo', 
    @source_name = N'InventoryStudents';
GO
SELECT DISTINCT is_tracked_by_cdc FROM sys.tables WHERE name = 'InventoryStudents'
SELECT sys.fn_cdc_get_min_lsn ('HR_InventoryStudents')AS min_lsn;
SELECT sys.fn_cdc_get_max_lsn()AS max_lsn;
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_InventoryStudents')
SET @to_lsn   = sys.fn_cdc_get_max_lsn()

SELECT * FROM cd.fn_cdc_get_all_changes_HR_InventoryStudents
(@from_lsn, @to_lsn, N'all');
GO
23 дек 11, 23:35    [11818515]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
Elena85
Member

Откуда:
Сообщений: 34
reactor-rector,

буковку Вы одну в названии схемы забыли. Не cd.fn_cdc... должно быть, а cdc.fn_cdc...
23 дек 11, 23:48    [11818543]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
reactor-rector
Member

Откуда: Украина, Харьков
Сообщений: 9
Elena85,

Увы не помогло)))
23 дек 11, 23:49    [11818545]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
reactor-rector
Member

Откуда: Украина, Харьков
Сообщений: 9
Elena85,

Прошу прошение, в названии схемы или названии процедуры?
23 дек 11, 23:51    [11818549]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
Elena85
Member

Откуда:
Сообщений: 34
reactor-rector,

Именно схемы. С названием вроде бы все ок.
23 дек 11, 23:56    [11818560]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
reactor-rector
Member

Откуда: Украина, Харьков
Сообщений: 9
Elena85,

В каком месте, а то я немного запутался ведь cd.fn_cdc_get_all_changes_HR_InventoryStudents - это название процедуры а схема @source_schema = N 'dbo', что именно вы имеете ввиду?
24 дек 11, 00:06    [11818585]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
Elena85
Member

Откуда:
Сообщений: 34
reactor-rector
Elena85,

В каком месте, а то я немного запутался ведь cd.fn_cdc_get_all_changes_HR_InventoryStudents - это название процедуры а схема @source_schema = N 'dbo', что именно вы имеете ввиду?


вот это fn_cdc_get_all_changes_HR_InventoryStudents - название функции и тут вроде бы все ок, а имя схемы должно быть не cd, как написали Вы, а cdc. dbo - это схема, в котрой находится Ваша таблица, но не функция. Т.е. Вам нужно так запрос писать:

 SELECT * FROM cdс.fn_cdc_get_all_changes_HR_InventoryStudents
(@from_lsn, @to_lsn, N'all'); 
24 дек 11, 00:14    [11818610]     Ответить | Цитировать Сообщить модератору
 Re: cd.fn_cdc_get_all_changes_ нидопустимое имя объекта SQL Server 2008  [new]
reactor-rector
Member

Откуда: Украина, Харьков
Сообщений: 9
reactor-rector,

Все нашол вы были правы, СПАСИБО
24 дек 11, 01:05    [11818730]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить