Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
Доброго времени суток, вкратце опишу ситуацию:
1. Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2) (Hypervisor)

2. Включил отслеживание изменений данных для таблицы, для полного счастья не хватило имени пользователя и даты внесения изменений.
3. Создал табличку:

CREATE TABLE [dbo].[lsn_Table](
[lsn] [binary](10) NOT NULL,
[username] [varchar](50) NULL,
[dt] [datetime] NULL
CONSTRAINT [PK_lsn_Table] PRIMARY KEY CLUSTERED
(
[lsn] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[lsn_Table] ADD CONSTRAINT [DF_lsn_Table_username] DEFAULT (suser_name()) FOR [username]
GO
ALTER TABLE [dbo].[lsn_Table] ADD CONSTRAINT [DF_lsn_Table_dt] DEFAULT (getdate()) FOR [dt]
GO


3.Повесил триггер на таблицу в которую записываются отслеживаемые изменения:


CREATE trigger [cdc].[ti_dbo_xxx_CT] on [cdc].[dbo_xxx_CT] for insert as
begin
set nocount on;
insert dbo.lsn_table (lsn)
select distinct i.__$start_lsn from inserted as i
end


4. В результате (вне зависимости от пользователя под которым установлено соединение с SQL Server) получаю одно и тоже доменное имя пользователя Windows который не зарегистрирован на sql сервере, и нет на сервере windows. Под этим пользователем работает администаратор SQL Server на своей локальной машине. В sys.syslogins такого пользователя нет.

Откуда он мог взяться?
22 май 12, 17:10    [12596178]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
original_login()
22 май 12, 17:15    [12596206]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Может быть лучше использовать другую функцию - ORIGINAL_LOGIN()?
22 май 12, 17:15    [12596207]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
Prolog
Может быть лучше использовать другую функцию - ORIGINAL_LOGIN()?


ORIGINAL_LOGIN() = NT AUTHORITY\SYSTEM

Сейчас хотябы понятно откуда имя :)
22 май 12, 17:20    [12596236]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
так у вас сервис производит вставку в таблицу?
22 май 12, 17:25    [12596288]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.ru/s10de_1devconc/html/7d514b05-7c4b-4ef2-8f16-b720df3bf44a.htm
22 май 12, 17:41    [12596407]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Vicont_rtf
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.ru/s10de_1devconc/html/7d514b05-7c4b-4ef2-8f16-b720df3bf44a.htm

Понятно и интересно. Ваш SQL-сервер работает под учетной записью LocalSystem?
22 май 12, 20:20    [12597071]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
Да.
23 май 12, 09:01    [12598364]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_NAME() возвращает "неизвестного" пользователя  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Никогда не работал со встроенной системой аудита. Но, как я понимаю из ваших сообщений, работает она так. Пользователь логинится, меняет данные, сервер перехватывает событие изменения, сам логинится/коннектится, и из под своей учётной записью записывает информацию об изменении данных пользователем. В этой системе встроенного аудита нет ли функционала, который "знает" о пользователе?
23 май 12, 11:20    [12599307]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить