Pergunta

Como nós não implementar os usuários de nossos aplicativos como usuários no servidor SQL, quando as Ligações de servidor de aplicativos a um banco de dados de cada aplicação sempre usa as mesmas credenciais para anexar a cada banco de dados.

Isto apresenta um problema de auditoria. Usando gatilhos, queremos guardar cada atualização, inserir e excluir e atribuir cada um para um usuário particular. Uma possível solução é adicionar uma coluna "atualizado pelo usuário" para cada mesa e atualizar isso toda vez. Isso significa uma nova coluna em cada mesa e um novo parâmetro em cada procedimento armazenado. Também significa que você só pode fazer exclusões macios.

Em vez disso proponho usando a propriedade Nome do aplicativo da cadeia de ligação e lendo isto com a propriedade APP_NAME () dentro do gatilho. Eu testei isso com um aplicativo simples e parece trabalho. (O formato poderia ser assim: App = MyApp | Usuário = 100)

A questão para vocês é, esta é uma má idéia e você tem um melhor?

Foi útil?

Solução

Eu uso SET CONTEXT_INFO para isso. É apenas o que você precisa.

Outras dicas

Ele certamente parece ser uma solução viável, embora você precisa injetar o nome de usuário na cadeia de conexão cada vez que seu aplicativo carrega. Note-se que esta solução provavelmente não trabalho com uma aplicação web, como a cadeia de ligação será diferente de cada vez, o que poderia levar a grandes problemas de conexão pooling.

Outra opção é para recuperar o nome do host / endereço IP (host_name SELECIONAR ()) e loja que em vez.

Você não necessariamente precisa de um novo parâmetro em cada procedimento armazenado, como você pode modificar cada procedimento armazenado (ou o gatilho) para inserir automaticamente o APP_NAME / hostname.

Uma desvantagem potencial é que todas as modificações realizadas via Management Studio não terá o APP_NAME costume, e você vai ficar com "Microsoft Management Studio" como o usuário.

Nós usamos a propriedade nome do aplicativo para gatilhos de auditoria de controle e não vi nenhum problema de usá-lo, e não ter notado qualquer problema de velocidade (embora no nosso caso, estamos especificamente não auditoria para certas aplicações, por isso é difícil medir quanto tempo não fazendo algo leva:))

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top