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 / 300421
Accepted
Racer SQL
Racer SQL
Asked: 2021-10-01 13:31:13 +0800 CST2021-10-01 13:31:13 +0800 CST 2021-10-01 13:31:13 +0800 CST

INSERT negado nas tabelas. mas o login tem permissão para isso

  • 772

Estou executando um procedimento do banco de dados X para o banco de dados Y.

No banco de dados Y deve haver uma inserção do usuário.

insira a descrição da imagem aqui

Nesta imagem, a primeira coluna é o Login, a segunda é o papel que tem todas as permissões necessárias (tem o INSERT na tabela que precisamos).

O logon está atribuído corretamente à função e a função possui todas as permissões necessárias.

mas quando executo o procedimento, recebo aqueles famosos erros:

Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 165 [Batch Start Line 2]
The INSERT permission was denied on the object 'XXXXXXXXXXX', database 'DB', schema 'dbo'.
Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 484 [Batch Start Line 2]
The INSERT permission was denied on the object 'YYYYYYYYYYYYYY', database 'DB', schema 'dbo'.
Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 527 [Batch Start Line 2]
The INSERT permission was denied on the object 'YYYYYYYYYYYYYY', database 'DB', schema 'dbo'.
Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 570 [Batch Start Line 2]
The INSERT permission was denied on the object 'YYYYYYYYYYYYYY', database 'DB', schema 'dbo'.

Criei outro Login de teste, dei exatamente as mesmas permissões e funcionou.

Como posso descobrir o que está bloqueando a inserção para este login? Eu até fiz um rastreamento para ver se encontro mais erros, nada no eventviewer também.

O login não tem permissões explícitas. é apenas a associação da função com as permissões.

As permissões de função estão corretas:

insira a descrição da imagem aqui

EDITAR:

eu tentei de tudo desde recriar o login do windows e refazer todas as permissões. O que notei é:

Consegui criar um login (sql login com senha) e funcionou.

Tentei como teste apenas inserir os dados na tabela com o login original do windows, falhou, então removi da ROLE e dei a permissão INSERT para ela e AINDA FALHA. mesmo com permissão de inserção no banco de dados, ele falha ao inserir dados.

permissions sql-server-2014
  • 2 2 respostas
  • 535 Views

2 respostas

  • Voted
  1. Best Answer
    Solomon Rutzky
    2021-10-02T12:01:06+08:002021-10-02T12:01:06+08:00

    Testar com um logon do SQL Server não ajudará se o problema for com um logon do Windows. Isso ocorre porque os logins do Windows têm a capacidade de autenticar por meio de várias fontes (próprio e/ou um ou mais grupos do Windows).

    Como o login do Windows é autenticado?

    • Diretamente (ou seja, o login tem uma entrada em sys.sys.server_principals),
    • através de um ou mais grupos Windows/AD (login não tem entrada em sys.server_principals, mas é membro de um ou mais grupos que tem entrada em sys.server_principals),
    • ou ambos?

    Para logins do Windows, todos os GRANTs e DENYs em todos os meios possíveis de autenticação são examinados. Mesmo se houver um logon explícito criado no SQL Server para esse logon do Windows, isso não será cancelado ou terá precedência sobre quaisquer permissões associadas a quaisquer grupos do Windows dos quais eles sejam membros que também sejam listados como logons. Pode ser que haja associação em um ou mais grupos do Windows/AD que tenham uma DENYou alguma outra restrição, e essas tenham precedência sobre GRANTs. Listar grupos por meio NET USER {login}do prompt de comando.

    OP respondeu:

    Usando EXEC xp_logininfo 'DOMAIN\LOGIN','all';eu poderia encontrar que Permission pathaponta para um grupo com DENY nele. !!!

    Isso não remove o problema, mas identifica a causa do problema para que agora possa ser resolvido.

    Uma solução possível seria usar o Module Signing (link para o meu site de informações), embora eu tivesse que testar para ver como ele lidaria com um DENYpara ter precedência. De qualquer forma, você não precisaria mexer com as funções e permissões diretas para objetos, então provavelmente ainda melhor, mesmo que ocorra o mesmo problema causado pelo DENY.

    • 1
  2. Aleksey Vitsko
    2021-10-03T02:25:59+08:002021-10-03T02:25:59+08:00

    Use o ScriptLoginPermissionsprocedimento armazenado, implante-o em qualquer banco de dados de usuário:

    https://github.com/aleksey-vitsko/Database-Administrator-Tools/blob/master/Permissions%20-%20ScriptLoginPermissions.sql

    Execute-o especificando o nome do login:

    exec ScriptLoginPermissions 'domain\account.name'
    

    Além de mostrar todas as permissões para esta conta, este SP também mostrará a associação ao grupo, incluindo grupos AD/Windows

    Então você deve verificar se algum dos grupos do AD, tem permissão DENY na tabela em questão.
    Execute o SP especificando o nome do grupo desta vez:

    exec ScriptLoginPermissions 'domain\group.name'
    
    • 0

relate perguntas

  • Erro de permissão negada do SQL Server quando sou DBOwner?

  • É possível encontrar os valores das variáveis ​​do MySQL se eu não tiver privilégios SELECT no mysql.user?

  • Como recuperar privilégios concedidos sem acesso ao banco de dados “mysql”?

  • Um usuário MySQL de 2 hosts não na mesma sub-rede

  • Você pode "su -" no MySQL?

Sidebar

Stats

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • 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
    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