linux mssqlserver换目录,sql-server – 如何在SQL Server 2017中直接修改系统目录?

注意:我了解所涉及的风险,以及通过这样做破坏生产系统的可能性.无论如何,我有兴趣这样做.

每当我尝试使用系统目录时,我都会遇到这些奇怪的错误,

UPDATE sys.sql_logins

SET password_hash = PWDENCRYPT('pass')

WHERE name = 'sa';

产生错误,

Msg 259 […] Ad hoc updates to system catalogs are not allowed.

我尝试了很多方法来取下训练轮,

sp_configure 'allow updates',`

go

reconfigure

go

但是,我无法弄清楚正确的选择……

this is no longer possible (at least not without jumping through a ton of additional hoops beyond just an sp_configure option – it’s not something you ever want to do on a production system), and all of the system catalog is now exposed through read-only views like sys.objects.

好吧,如果我想跳过那些箍怎么办?我该怎么做?

解决方法:

!务必阅读警告,大胆,在底部!

允许更新的服务器配置选项在SQL Server 2005中开始呈现为无效.文档指出它不会出错,但实际上不允许对系统目录表进行任何直接更新.

首先,您需要要更新的实际表名.您从中选择的名称只是一个系统目录View,而不是真正的Table.我通常使用以下内容:

EXEC sp_helptext N'sys.{some name here}';

然后,执行以下操作:

>使用以单用户模式重新启动实例

sudo systemctl stop mssql-server

sudo -u mssql /opt/mssql/bin/sqlservr -m

需要明确的是:此步骤允许系统目录更新.连接到DAC本身以执行其他操作不需要单用户模式.

>通过专用管理控制台连接与sa或其他一些sysadmin登录连接.您可以通过在命令提示符窗口中运行以下命令在SQLCMD交互式会话中执行此操作:

sqlcmd -S admin:localhost -U sa

如果Linux SQLCMD由于某种原因不支持此功能,您可以启用远程DAC连接,然后使用Windows机器来挖掘DAC正在工作.您可以在Linux上启用DAC,:

EXEC sp_configure 'remote admin connections', 1;

RECONFIGURE;

>在该DB中,尝试以下内容:

UPDATE sys.{whatever_name_you_found} {enter}

SET [some_column] = {some_value} {enter}

WHERE [some_other_column] = {the_better_be_correct_or_else_ID}; {enter}

GO {enter}

在您输入GO {enter}之前,它不会执行该语句.

危险将罗宾逊!

直接编辑系统目录表时请务必小心,并且不要过于习惯这样做.只有在绝对没有其他方法来解决问题时(例如此处的情况),才应该这样做.避免直接编辑可能有几个原因,但最初想到的两个原因是:

>就像我们创建的数据模型一样,可能存在规则和工作流程,以确定我们不知道的工作方式(例如,非规范化,管理各种表格中数据状态的“业务”规则等)

>如果遇到问题并签订支持合同(我还没有看到支持协议的条款,但我很难相信这样的语言不会出现),微软很可能会做出直接修改而无法帮助你.在那里).

@Paul Randal在评论中确认:“手动编辑系统表会在数据库的引导页面中不可撤销地设置一个标记,标记您的数据库已经以这种方式进行了编辑,如果您随后遇到问题,CSS可能会决定不帮助您数据库.”

标签:sql-server-2017,sql-server,linux,system-tables,catalogs

来源: https://codeday.me/bug/20190805/1591663.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值