AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 38933
Accepted
Eric J.
Eric J.
Asked: 2013-03-31 19:41:32 +0800 CST2013-03-31 19:41:32 +0800 CST 2013-03-31 19:41:32 +0800 CST

Executando sys.dm_fts_parser sem função de servidor sysadmin

  • 772

Um aplicativo da Web precisa ser executado sys.dm_fts_parserpara descobrir quais palavras a Pesquisa de texto completo do SQL Server usou para corresponder documentos com a finalidade de realçar a sintaxe. Esse procedimento armazenado só pode ser executado se o chamador estiver na sysadminfunção de servidor.

Permissões

Requer associação na função de servidor fixa sysadmin e direitos de acesso à lista de palavras irrelevantes especificada.

http://msdn.microsoft.com/en-us/library/cc280463%28v=sql.105%29.aspx

Como seria muito imprudente conceder essa função de servidor ao usuário do servidor da Web, tentei criar um procedimento armazenado que é executado como um usuário separado que está nessa função.

create procedure usp_fts_parser
    @query nvarchar(max)
with execute as owner
as
select display_term from sys.dm_fts_parser(@query, 1033, 0, 0);
go

Em seguida, criei um usuário login_sign_fts_parser, tornei-o o proprietário do procedimento armazenado

altere a autorização em usp_fts_parser para login_sign_fts_parser

e tente permitir que os direitos de usuário do banco de dados do servidor web representem esse usuário:

GRANT IMPERSONATE ON USER::[IIS APPPOOL\Strategic Window] TO login_sign_fts_parser

Quando tento executar usp_fts_parser, recebo o erro:

Não é possível executar como principal do banco de dados porque o principal "login_sign_fts_parser" não existe, esse tipo de principal não pode ser representado ou você não tem permissão.

Por que recebo esse erro? Como posso cumprir meu objetivo de execução sys.dm_fts_parsersem conceder permissões indevidas ao usuário do banco de dados do servidor web?

sql-server sql-server-2008-r2
  • 1 1 respostas
  • 1238 Views

1 respostas

  • Voted
  1. Best Answer
    Kenneth Fisher
    2013-03-31T22:03:45+08:002013-03-31T22:03:45+08:00

    O problema está na diferença entre logins e usuários. Ao conceder as permissões, você está trabalhando com um usuário. Apenas um login pode ter permissões de nível de servidor, como sysadmin. Eu discuti isso aqui se você estiver interessado.

    Enquanto isso, posso lhe dizer como fazer o que você precisa, mas não é a melhor ideia do mundo.

    Primeiro, crie um banco de dados separado, torne SA o proprietário desse banco de dados, defina a propriedade confiável para esse banco de dados. Em seguida, crie seu procedimento armazenado usp_fts_parser com EXECUTE AS OWNER. Neste caso, OWNER é dbo. Também neste caso dbo é SA. Como você tornou o banco de dados confiável, ele permitirá que os usuários acessem as permissões no nível do servidor. Tudo isso significa que seu procedimento armazenado poderá atuar como um administrador de sistema. Em seguida, conceda ao login que você está usando para o aplicativo da Web permissões de conexão para seu novo banco de dados. Em seguida, conceda a esse usuário permissões de execução no procedimento armazenado.

    Isto é muito importante. SOMENTE conceda ao usuário permissões de execução no procedimento armazenado. Você criou uma grande brecha de segurança ao ativar o confiável com um banco de dados de propriedade de um administrador de sistema, então você precisa ter muito, muito, muito cuidado com quem você dá permissões para esse banco de dados e o que você permite que eles façam.

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve