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 / 18610
Accepted
8kb
8kb
Asked: 2012-05-31 22:01:51 +0800 CST2012-05-31 22:01:51 +0800 CST 2012-05-31 22:01:51 +0800 CST

Qual é o propósito do 'proprietário' do banco de dados?

  • 772

Hoje, enquanto solucionava um problema do agente de serviços, descobri que o proprietário do banco de dados era o login do Windows de um funcionário que havia deixado a empresa. Seu login foi removido e, portanto, as notificações de consulta estavam falhando.

Supostamente, a melhor prática para lidar com isso é tornar 'sa' o proprietário do banco de dados. Nós mudamos e isso limpou a fila.

Minha pergunta (muito elementar): qual é o proprietário do banco de dados e qual é o seu propósito?

sql-server sql-server-2008
  • 2 2 respostas
  • 68599 Views

2 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2012-06-01T01:05:39+08:002012-06-01T01:05:39+08:00

    Há alguma confusão entre os conceitos de banco de dados de 'dbo' (um usuário) e 'db_owner' (uma função fixa) de um lado e o conceito de instância de 'proprietário do banco de dados' do outro lado. O 'dbo' e o 'db_owner' são frequentemente chamados de 'proprietário do banco de dados'. No que você está perguntando, você está falando sobre o proprietário do banco de dados como o principal do servidor que possui o banco de dados.

    A teoria é assim: qualquer coisa que possa receber permissões é um arquivo 'seguro' . Todos os protegíveis têm um proprietário. O proprietário de um securável tem controle absoluto sobre o securável e não pode ser negado nenhum privilégio. Os protegíveis no nível da instância são de propriedade dos principais do servidor (logins). Os protegíveis no nível do banco de dados são de propriedade dos principais do banco de dados (usuários). Os principais vêm em dois sabores: primário (identidade) e secundário (adesão). Os protegíveis no nível do servidor são, por padrão, de propriedade do principal do servidor primário registrado no momento. Os protegíveis no nível do banco de dados são de propriedade por padrão da entidade de banco de dados atual, exceto para objetos vinculados ao esquema que, por padrão, são de propriedade do proprietário do esquema. Todos os protegíveis suportam a cláusula AUTHORIZATION no momento da criação para impor um proprietário diferente.ALTER AUTHORIZATIONpode ser usado posteriormente para alterar o proprietário de qualquer protegível.

    Como o banco de dados é protegível no nível do servidor, segue-se que, por padrão, ele será de propriedade do principal principal que emitiu a instrução CREATE DATABASE. Ou seja. o login NT do funcionário que partiu.

    Então, sua pergunta é realmente " Por que os protegíveis precisam de um proprietário? ". Porque o dono é a raiz da confiança. É o proprietário que concede, nega e revoga a permissão sobre o objeto. Um sistema de segurança pode ser projetado sem proprietários de protegíveis? Provavelmente sim, mas teria que haver algum mecanismo para substituir o papel que os proprietários desempenham no modelo atual. Por exemplo, considere que os protegíveis do pai não têm proprietário (por exemplo, em vez de possuir um protegível, o criador original apenas recebe CONTROLE sobre ele) seria possível criar um securável e revogar o acesso a ele para todos , incluindo ele mesmo. A exigência de um proprietário contorna esse problema, pois um proprietário não pode se trancar.

    O efeito colateral pouco conhecido de CREATE DATABASE de criar um protegível (o banco de dados) de propriedade do login original do NT já queimou muitos antes. As regras são as mesmas para todos os protegíveis, mas alguns fatores agravam os problemas do proprietário do DATABASE:

    • os outros protegíveis de nível de servidor (ponto de extremidade, função de servidor, logon) são raramente usados, movidos etc.
    • os protegíveis no nível do banco de dados geralmente acabam sendo de propriedade dbo(do banco de dados principal) ou de algum outro banco de dados principal e, portanto, o proprietário está contido no banco de dados
    • Ter o padrão de propriedade do banco de dados para o principal primário do NT cria um problema de contenção (o proprietário é um NT SID gerenciado pelo AD e não viaja com os arquivos do banco de dados, a conta do NT pode ser digitada etc etc etc.)
    • a coisa mais importante: o proprietário do banco de dados tem efeitos colaterais importantes, especificamente o EXECUTE AS context. Este problema posterior é o que queima a maioria dos usuários. Como o Service Broker faz uso extensivo do EXECUTE AS (a entrega da mensagem tem um contexto EXECUTE AS implícito, bem como a ativação da fila que tem um explícito) geralmente são os usuários do Service Broker que descobrem esse problema primeiro.

    BTW, Kudos para investigar e corrigir seu problema original :)

    • 64
  2. Justin Jenkins
    2012-05-31T23:25:08+08:002012-05-31T23:25:08+08:00

    O banco de dados owneré uma espécie de retrocesso para um tempo antes do esquema (adequado) ser introduzido no SQL Server 2005.

    Basicamente, um proprietário de banco de dados é o padrão dbo(proprietário do banco de dados) do banco de dados, sendo o próprio banco de dados um objeto de banco de dados .

    Dos documentos do SQL Server 2000 ...

    O dboé um usuário que tem permissões implícitas para realizar todas as atividades no banco de dados.

    Nas versões anteriores do SQL Server, quando um esquema não podia "possuir" um objeto ( ou melhor, deveria ser declarado que todos os objetos, tabelas, exibições dboetc. "usuário" para possuí-lo ... não é preciso dizer por que algo precisa possuir o banco de dados (ou então as permissões em geral seriam bastante difíceis.)

    Então, tecnicamente em versões mais antigas do SQL Server (ou bancos de dados atualizados) não era a tabela "Foo" era a tabela "dbo.Foo" ... dbosendo o proprietário.

    Com o advento do SQL Server 2005, você poderia ter objetos de banco de dados de propriedade do esquema, como dizer que você tem um esquema chamado "bar" e uma tabela chamada "Foo" bar.Foo...

    SELECT * FROM bar.Foo WHERE etc = 'blah`;
    

    A parte complicada vem com o fato de que o usuário que cria o banco de dados é automaticamente definido como o proprietário , o que leva a problemas com a rotatividade de funcionários, etc.

    Portanto, é uma prática recomendada alterar isso para a saconta ou talvez (na minha experiência) para uma conta de domínio que possa ser administrada pela equipe de operações/TI de uma organização.

    Este artigo mostra a diferença entre a maneira mais antiga de "proprietário" de fazer as coisas e o novo sistema de propriedade baseado em "esquema".

    Para entender a diferença entre proprietários e esquema, vamos passar algum tempo revisando a propriedade do objeto. Quando um objeto é criado no SQL Server 2000 ou anterior, o objeto deve ter um proprietário. Na maioria das vezes, o proprietário é “dbo”, também conhecido como proprietário do banco de dados.

    • 15

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

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

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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