小编Tho*_*ger的帖子

比较两台服务器上的代理作业

我目前正在构建一个流程,Powershell在该流程中,我们SQL Server Agent只需输入服务器名称即可将作业从一台服务器复制到另一台服务器。该脚本使用 SMO 库来获取对两个作业服务器的访问权限,为“其他”服务器上不存在的作业编写脚本,然后运行这些脚本(在 SqlConnection 和 SqlCommand 下)。问题是如何检查ServerOneServerTwo.

我尝试了四种不同的方法:使用来自 ServerTwo(比较服务器)的作业构建一个数组,然后查看该数组是否是contains来自 ServerOne 的作业;我也尝试过类似逻辑的操作符;并且,使用数组,我在Compare-Object从两台服务器加载两个带有作业名称的数组并测量另一个不存在的作业(也产生所有内容)之后使用。最后,我遍历 ServerTwo 上的每个作业并遍历 ServerOne 上的每个作业,看看它们是否彼此相等(这是下面的代码)。这将产生一切,因为每个工作不等于每个工作:

$ServerName = "S1\I"
$ComServer = "S2\I"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerName
$com = New-Object "Microsoft.SqlServer.Management.Smo.Server" $ComServer


foreach ($a in $com.JobServer.Jobs)
{
    $a = $a.Name.ToString() 
    foreach ($j in $srv.JobServer.Jobs) 
    { 
        $j = $j.Name.ToString()

        if ($a -like $j)
        {
            Write-Host $j
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

是否有另一种方法可以检查作业是否存在于一台服务器上与另一台服务器上(请注意,我已经知道如何编写作业脚本,执行它等等;确保作业不存在的部分已经存在是这里的问题)?

sql-server powershell

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

删除日志以增加数据库空间?

我正在运行 SQL Server 2008 Express 并且遇到了 4GB 大小的问题。在迁移到更大的数据库之前,我想腾出一些空间给我时间。

我不需要我的交易日志。那么,我可以删除我的日志以增加空间吗?

否则,我将不得不创建一个重复的数据库结构,然后将数据复制到新数据库中,然后从原始数据库中删除所有内容,以便我可以重新开始。

在这种情况下,是否有一种“简单的方法”可以将旧表中的数据复制到新表中?

sql-server database-size transaction-log

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

查找缺失的索引

可用于在 mssql 2008 中查找缺失索引的工具?我们可以使用数据库引擎优化顾问找到丢失的索引吗

index sql-server-2008 sql-server

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

数据库恢复模型 - 简单与完整

SIMPLE 恢复模型是否执行与 FULL 恢复模型相同的事务日志记录?即保留每个插入/更新/删除事务的记录?

如果是这种情况,那么为什么要使用 FULL Recovery 模式?在 SIMPLE Recovery 中,检查点每分钟在繁忙的数据库上运行一次,因此数据被写入磁盘。

在 SIMPLE 恢复模型中,数据丢失可能发生在哪里?

谢谢!

sql-server disaster-recovery

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

使用单个查询将数据添加到多个表

我想使用单个INSERT INTO查询将数据添加到多个表,我可以这样做吗?

如果可能,请指导我并提供语法。

sql-server-2008 sql-server t-sql

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

插入失败日志

有没有办法查看 SQL Server 数据库的失败插入?我看到我的一些插入失败了,如果可能的话,我想恢复这些数据。

sql-server logs

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