Stack Overflow Q & A Modify OWNER on all table 同时在 PostgreSQL 中描述了一些漂亮的方法来将表和其他对象更改为特定用户,并且它工作得很好,但是所有的建议似乎都忽略了我创建的函数。
是否有一种相当简单的方法来重置数据库中所有对象的所有者,包括函数?手工操作是非常不可取的。
客户要求我实施一些用于报告目的的视图,这些视图将通过 PowerBI、Excel 和 SSRS 访问。指定的用户将只能访问该视图,并且该用户必须不能使用任何基础表。
我遇到的问题是视图中的 SQL 涉及 3 个不同的模式(都在同一个数据库中):
观点是:
CREATE VIEW dbo.vTestPermissions
AS
SELECT a.Column1,
b.Column1,
c.Column1
FROM Pupil.Table1 a
JOIN Provider.Table2 b ON a.Column1 = b.Column1
JOIN Security.Table3 c ON a.Column1 = c.Column1
Run Code Online (Sandbox Code Playgroud)
表/视图的所有者如下:
当我从视图中选择时,出现错误:
对象“table3”、数据库“TEST”、架构“Security”的 SELECT 权限被拒绝
我曾尝试在SELECT有和没有GRANT模式和表选项的情况下授予权限,但这使用户可以使用基础表。
对此的任何帮助将不胜感激。
我已使用以下命令在数据库上启用了更改数据捕获 (CDC)exec sys.sp_cdc_enable_db
这将创建一个由cdc用户拥有的新cdc架构
select
s.*
, dp.name
from sys.schemas as s
join sys.database_principals as dp
on dp.principal_id = s.principal_id
Run Code Online (Sandbox Code Playgroud)
因为我想利用所有权链接并使用 proc 从此架构中读取数据,所以我可以将所有者更改为dbo吗?
ALTER AUTHORIZATION ON SCHEMA::cdc TO dbo
Run Code Online (Sandbox Code Playgroud)
此命令起作用并更改所有者。但疾病预防控制中心已经启用了一段时间,我担心未来会进一步破坏一些东西。
security change-data-capture owner sql-server-2019 schema-migration
如果我创建一个新架构并将架构所有者设置为另一个架构,例如 dbo,那么这对我的新架构有何意义?
我的新架构是否继承了其所有者 dbo 的相同权限?
在用户下创建这些表和序列postgres:
表创建模式
SET search_path TO main;
CREATE TABLE table1 ...
CREATE TABLE table2 ...
CREATE TABLE table3 ...
Run Code Online (Sandbox Code Playgroud)
序列创建模式
CREATE SEQUENCE main.seq1...
CREATE SEQUENCE main.seq2...
CREATE SEQUENCE main.seq3...
Run Code Online (Sandbox Code Playgroud)
现在想将它们全部更改为另一个名为 的所有者user1。如何在不重新创建这些对象的情况下使用它们?
我有理由更改我的计算机名称(it\xe2\x80\x99s 在虚拟机中运行)。我有一个现有的 SQLExpress 实例,它是在重命名之前安装的。
\n有些功能会失败,因为新数据库仍然由旧所有者创建。更具体地说,当我尝试创建新的数据库图表时,出现以下错误。
\n\n\n无法获取有关 Windows NT 组/用户 \'OLDNAME\\user\' 的信息,错误代码 0x534。(微软 SQL Server,错误:15404)。
\n
我使用以下说明来重命名服务器:
\nsp_dropserver \'OLDNAME\\SQLEXPRESS\';\nGO\nsp_addserver \'NEWNAME\\SQLEXPRESS\',\'local\';\nGO\n-- Restart Server\nSELECT @@SERVERNAME; -- NEWNAME\\SQLEXPRESS\nRun Code Online (Sandbox Code Playgroud)\n但是,这并不影响新数据库的默认所有者。它们仍在与所有者一起创建OLDNAME\\user,但所有者已不存在。
我知道如何在创建后更改现有数据库的所有者。但是,如何才能让新数据库拥有正确的所有者呢?
\nowner ×6
sql-server ×3
postgresql ×2
ddl ×1
functions ×1
inheritance ×1
logins ×1
metadata ×1
permissions ×1
schema ×1
security ×1
view ×1