小编Rou*_*und的帖子

从另一个 SQL 服务器实例启动作业

我在 SQL 2008 服务器(服务器 A)上有一份工作(我知道这并不理想……正在解决这个问题)。代理在 NT AUTHORITY\NETWORK SERVICE 下运行。

我想添加一个运行位于另一台 SQL 2014 服务器(服务器 B)上的作业的步骤。

我会用:

EXEC [Server B].msdb..sp_start_job N'JobName'
Run Code Online (Sandbox Code Playgroud)

从服务器 A 手动运行它按预期在服务器 B 上执行作业。

如果我将任务添加到服务器 A 上的作业,它会失败并显示以下消息:

以用户身份执行:NT AUTHORITY\NETWORK SERVICE。对象“sp_start_job”、数据库“msdb”、架构“dbo”上的 EXECUTE 权限被拒绝。[SQLSTATE 42000](错误 229)。步骤失败。

我已将服务器 B 上的 NT AUTHORITY\NETWORK SERVICE 分配给 msdb 中的“TargetServerRole”,然后授予有关用户 SP_Start_Job 和 SP_Stop_Job 的执行权限。

服务器 A 将服务器 B 作为链接服务器,我尝试设置“本地服务器登录到远程服务器登录映射”本地登录 NT AUTHORITY\NETWORK SERVICE 来模拟。

作业仍然失败并出现相同的错误。

我需要做什么?

谢谢

sql-server-2008 sql-server permissions sql-server-agent jobs

4
推荐指数
2
解决办法
1537
查看次数

表碎片化

如果我执行以下操作:

SELECT dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table', 
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as avg,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID('dbname'), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID('dbname')
ORDER BY indexstats.avg_fragmentation_in_percent desc
Run Code Online (Sandbox Code Playgroud)

它显示了碎片级别。然后我运行了 Ola Hallengren 的索引优化脚本,这显然减少了索引。

如果我再次运行查询,它现在会在没有索引的表中显示高碎片,例如:

SELECT dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table', 
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server fragmentation ola-hallengren

2
推荐指数
1
解决办法
1723
查看次数

删除前导和尾随引号

我有一个可能以引号开头和结尾的字段。如果字符串以引号开头和结尾,我只想删除引号。如果字符串中存在引号,那么我希望保留它们。

REVERSE如果该字段确实以引号开头和结尾,我已经使用了一些有用的东西,但如果不是,则它只返回空值。

如果字段结果不是以引号开头,我如何确保我仍然获得字段结果?

我拥有的:

REVERSE(STUFF(REVERSE(STUFF(fieldname, CHARINDEX('"', fieldname), LEN('"'), '')), CHARINDEX('"', REVERSE(STUFF(fieldname, CHARINDEX('"', fieldname), LEN('"'), '')), 1), 1, ''))
Run Code Online (Sandbox Code Playgroud)

sql-server query t-sql sql-server-2016 string-manipulation

2
推荐指数
2
解决办法
1256
查看次数

记录到文件

我正在使用 ola-hallengren 维护脚本。我正在登录到表和文件。我想更改文件日志的位置。我可以这样做吗?非常感谢

sql-server maintenance-plans ola-hallengren

1
推荐指数
1
解决办法
252
查看次数