Как сохранить текущего пользователя SQL Server в пользовательскую таблицу через клиент C #? - PullRequest
2 голосов
/ 22 марта 2011

Я использую С # Express с Entity Framework.И не очень хорошо в сценариях SQL Server.

Итак, у меня есть эта таблица

CREATE TABLE DataTable
(
  Id                INT              NOT NULL  ,
  Value             VARCHAR(20)          NULL  ,
  Author            ???????????      NOT NULL  ,
  CreateTime        DATETIME         NOT NULL  ,  
  CONSTRAINT PK_DataTable PRIMARY KEY CLUSTERED (num ASC) 
  ON [PRIMARY] 
)

Скажите, пожалуйста, как записать текущего пользователя сервера в качестве автора данных, фиксирующих мою таблицу.Пользователи входят через локальную сеть в режиме авторизации SQL Serve.Это должно быть довольно прозрачно для программиста на c # и должно обрабатываться на стороне сервера.

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

вы можете сделать это varchar(100) со значением по умолчанию SUSER_SNAME() для вставки, для обновления используйте update trigger или введите SUSER_SNAME() из вашего внешнего интерфейса.

SUSER_SNAME() будет работать как для Windows, так и для входа в SQL

2 голосов
/ 22 марта 2011

Это было бы отличным местом для триггера. Триггеры базы данных часто используются для регистрации операций, таких как описываемая вами.В триггере просто включите текущего пользователя в данные вставки.

Здесь есть полный образец .

0 голосов
/ 23 марта 2011

Я использовал этот скрипт

    CREATE TRIGGER Author
    ON DataTable
    INSTEAD OF INSERT
    AS
    DECLARE
    @Value nvarchar(max),
    @CreateTime datetime

    SET @Value = (SELECT Value FROM inserted)
    SET @CreateTime = (SELECT CreateTime FROM inserted)

    INSERT INTO [DataTable]
               ([Value]
               ,[Author]
               ,[CreateTime])
        VALUES (@Value
               ,USER_ID()
               ,@CreateTime)
    GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...