AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-26387

Question3CPO's questions

Martin Hope
Question3CPO
Asked: 2014-02-06 06:35:31 +0800 CST

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

  • 2

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

我尝试了四种不同的方法:使用来自 ServerTwo(比较服务器)的作业构建一个数组,并查看该数组是否是contains来自 ServerOne 的作业;我还尝试了具有相同逻辑的 like 运算符;并且,使用数组,我在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
        }
    }   
}

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

sql-server powershell
  • 1 个回答
  • 2613 Views
Martin Hope
Question3CPO
Asked: 2014-01-25 07:37:50 +0800 CST

按日期删除所有带有日期的表

  • 3

请参阅关于 SO 的这个问题,因为它很相似。

我正在研究一种从数据库中具有日期值的所有表中删除一系列日期的方法(用于构建小型开发人员)。我构建了一个脚本,允许用户传入开始、结束和数据库值,但遇到了动态 sql 的问题。例如,当删除某些日期之间的记录时,我会遇到操作数冲突。下面显示了一个过度简化的示例:

DECLARE @b DATE, @e DATE, @cmd NVARCHAR(MAX)
SET @b = '2012-07-01'
SET @e = '2014-01-25'


SET @cmd = 'DELETE FROM DateTable
WHERE ValueDate BETWEEN ' + CONVERT(VARCHAR,@b,121) + ' AND ' + CONVERT(VARCHAR,@E,121)

EXEC sp_executesql @cmd

错误是Operand type clash: date is incompatible with int。我尝试CAST在动态 sql 中进行内部操作,因为错误表明ValueDate变为和INT:

-- Only the WHERE clause changed:
WHERE ValueDate BETWEEN CAST(' + CONVERT(VARCHAR,@b,121) + ' AS DATE) AND CAST(' + CONVERT(VARCHAR,@E,121) + ' AS DATE)'

这次的错误是Explicit conversion from data type int to date is not allowed。最后我尝试使用其他格式(来自 MSDN)。简而言之,我想做 SO 用户想要完成的事情,但能够跨多个表完成(我什至搜索了一个脚本,因为我怀疑我是第一个想要这个的人)。

sql-server
  • 1 个回答
  • 2289 Views
Martin Hope
Question3CPO
Asked: 2013-12-06 13:07:24 +0800 CST

在 Powershell 中从 SSMS 检索打印的消息

  • 12

我们的 DBA 团队不使用以下方法验证备份TSQL(这可以在备份后轻松完成并且几乎不需要时间,所以我不明白为什么不这样做):

RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\LOCATION'

他们过去曾遇到过问题,所以即使我们认为他们会从中吸取教训,但他们没有。我创建了一个 Powershell 脚本来执行此操作,因为我们有大约 100 多台服务器,我只想针对所有备份运行此脚本以确保它们有效。下面的脚本运行正确(因为它不会中断或抛出错误),我很好奇是否有办法在 Powershell 中获取打印的消息,我们通常会在 SSMS 中得到它指出文件 1 上的备份集是作为验证有效。

$SqlCon = New-Object System.Data.SqlClient.SqlConnection
$SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master"

$baks = Get-ChildItem "D:\Backups\" -Filter *.BAK

foreach ($bak in $baks)
{
    $SqlCon.Open()
    $cd = New-Object System.Data.SqlClient.SqlCommand
    $cd.Connection = $SqlCon

    $cd.CommandText = "RESTORE VERIFYONLY FROM DISK = @f"
    $cd.Parameters.Add("@f", $bak.FullName)
    $cd.ExecuteNonQuery()
    $SqlCon.Close()
}
sql-server powershell
  • 1 个回答
  • 7518 Views
Martin Hope
Question3CPO
Asked: 2013-10-09 06:57:05 +0800 CST

将多个跟踪文件导入 SQL Server 表

  • 2

我正在导入 200 多个跟踪文件(这些文件很大),我目前的方法是执行循环并插入跟踪数据(参见下面的脚本)。我环顾四周,看看是否有更快的方法来做到这一点,无论是通过 SSIS 还是 C#,它们似乎仍然调用下面的函数,类似于下面的脚本。

任何人有任何其他方法可以用来导入多个跟踪吗?不要误会我的意思,下面的代码有效,但我很好奇是否有更快的东西我没有考虑。

DECLARE @start INT = 1, @stop INT = 223, @sql NVARCHAR(MAX), @path VARCHAR(1000)


WHILE @start <= @stop
BEGIN

       SET @path = 'N:\Traces\TraceFile_' + CAST(@start AS VARCHAR(5)) + '.trc'

       SET @sql = 'INSERT INTO SavedTraces
                   SELECT *
                   FROM ::fn_trace_gettable(''' + @path + ''', default)
                    '

       EXECUTE sp_executesql @sql

       SET @start = @start + 1
       SET @path = ''
       SET @sql = ''

END

数据说明: 490MB (~.5G),包含 11,700,000+ 行,需要 13:11 分钟才能导入。

sql-server trace
  • 2 个回答
  • 6349 Views
Martin Hope
Question3CPO
Asked: 2013-07-26 13:15:29 +0800 CST

识别未使用的存储过程

  • 25

明年,我将帮助清理几个 SQL Server 环境。

我们有大约 10,000 个存储过程,估计其中只有大约 1000 个被定期使用,另外 200 个左右在极少数情况下使用,这意味着我们有很多工作要做。

由于我们有多个部门和团队可以访问这些数据库和程序,因此我们并不总是调用这些程序,这意味着我们必须确定正在调用哪些程序。最重要的是,我们希望在几个月内确定这一点,而不是在几天内(这消除了一些可能性)。

一种方法是使用SQL Server Profiler并跟踪正在调用的过程,并将它们与我们拥有的过程列表进行比较,同时标记这些过程是否被使用。从那时起,我们可以将程序转移到不同的模式,以防部门尖叫。

在这里使用Profiler最有效的方法吗?和/或你们中的任何人有没有做过类似的事情并找到另一种方式/更好的方式来做到这一点?

sql-server profiler
  • 5 个回答
  • 21130 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve