标签: automation

有没有一种很酷的方法可以在数百台机器上为 SQL Server 执行 CU 更新?

我的公司在一夜之间从 50 个 SQL Server 增长到 200 多个。帮助!

我的问题是:

  • 我怎样才能在这么多服务器上执行 CU 更新并且仍然有生命并保持理智?SCCM 似乎无法执行 CU 更新。

  • 有没有其他人能够在 100 台服务器上执行 CU 更新?

  • 还有哪些其他选择?

sql-server installation automation

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

如何在离线机器上安装 SQL Server PowerShell 模块?

我有一些 SQL Server 机器无法连接到任何外部站点。

我在管理数据库时越来越多地使用 PowerShell,所以我肯定需要安装这个模块,以便我可以使用我的 PowerShell 例程。

事实证明,在这些离线机器上安装 SQL Server 模块很困难。

当我尝试安装模块时:

在此处输入图片说明

SqlServer模块要求提供NuGet 模块包

在此处输入图片说明

然后我得到了这片红色字母的海洋和以下错误消息,如下图所示:

警告:无法从 URI“ https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409 ”下载到“”。

警告:无法下载可用提供程序的列表。检查您的互联网连接。PackageManagement\Get-PackageProvider:无法找到包提供程序“NuGet”。

它可能尚未导入。尝试“Get-PackageProvider -ListAvailable”。

在 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30 + ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...

在此处输入图片说明

此 PowerShell 模块安装的解决方法是什么?

sql-server powershell installation automation patching

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

恢复所有数据库脚本

我正在将 SQL Server DB 迁移到新实例。

有人告诉我,可以从系统目录中的可用备份动态构建 RESTORE 脚本。

有谁知道一个示例脚本来做到这一点?

谢谢!

sql-server scripting restore catalogs automation

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

显示表的所有权限的脚本

在我的数据库中,我有一个名为 spGen2_tblIE_SchedProcess_Update 的过程。

当我运行这个脚本时

select * from sys.objects
where name = 'spGen2_tblIE_SchedProcess_Update'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在同一个数据库中,我有一个名为 tblIE_Step 的表

当我运行以下脚本时

select * from sys.objects
where name = 'tblIE_Step'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后我想查看对象的所有权限

当我检查我的存储过程时,我运行了这个脚本:

select 'Proc' = SCHEMA_NAME(p.schema_id)+'.'+p.name
    , 'Type' = per.state_desc, 'Permission' = per.permission_name
    , 'Login' = pri.name, 'Type' = pri.type_desc 
    , *
From sys.objects as p
left join sys.database_permissions as per on p.object_id = per.major_id
left join sys.database_principals as pri on per.grantee_principal_id = pri.principal_id
where p.object_id = 87671360
Run Code Online (Sandbox Code Playgroud)

我得到了权限:

在此处输入图片说明

但是当我为我的桌子运行相同的东西时,我什么也没得到:

select 'Proc' = SCHEMA_NAME(p.schema_id)+'.'+p.name …
Run Code Online (Sandbox Code Playgroud)

sql-server permissions scripting logins automation

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

自动定期测试您的备份

我正在调查其他 DBA 如何对其数据库备份执行自动定期测试以确保发生灾难时的可恢复性,我对我在该主题上发现的稀疏主题感到非常失望。

我将尝试在评论中描述我为我的公司提出的解决方案,但是你们如何确保您的备份实际上是可恢复的?

  1. 您是否定期恢复备份以测试服务器?使用脚本?
  2. 具有此功能的第三方软件?
  3. 在备份上运行仅验证?
  4. 让您的初级 DBA 进行恢复测试?

让我知道我是否应该在问题中改写或添加任何内容。

更新

经过一段时间和完善,我决定如果有人感兴趣,我决定发布我的脚本。https://github.com/curiebabz/SSARS

sql-server backup recovery automation

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

如何从程序中找到 Oracle 的安装版本和发行版?

我需要从程序中确定在服务器上的每个 Oracle 主目录中安装了哪个版本的 Oracle。由于可能尚未在 Home 中创建任何数据库,因此我需要能够在数据库之外执行此操作(即,无需连接到数据库)。此外,能够从远程程序执行此操作将是非常可取的。

这是来自运行 .Net(C#,如果重要的话)的 Windows 程序。

我目前正在读取远程注册表项(使用此技术:https : //stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys),以根据此方法查找所有 Oracle 主目录。这工作正常,但是,我环顾了这些键,并没有看到有关确切版本/发行版的任何信息。

Oracle Home 本身的名称当然是 1) 不是一个可靠的指标,并且 2) 没有确切的版本/发行版(例如“10.2.0.4.0”)。基本上,我正在寻找一种方法来找出 Oracle Universal Installer 在 Installed Products 按钮中告诉您的内容。


我应该澄清一下,所有服务器都将运行 Windows 2003-2008。

oracle automation

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

如何编写用户定义的表类型的脚本?

我可以 使用以下任一脚本获取所有表类型的名称和定义

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED


IF OBJECT_ID('TEMPDB..#RADHE') IS NOT NULL
   DROP TABLE #RADHE

CREATE TABLE #RADHE
(
 RADHE SYSNAME,
 COLUMN_NAME SYSNAME,
 TYPE_COLUMN SYSNAME,
 PRIMARY KEY CLUSTERED (RADHE,COLUMN_NAME)
 )

DECLARE @sql nvarchar(max) = N'', 
  @stub nvarchar(max) = N'SELECT [RADHE]=N''$--RADHE--$'', 
   COLUMN_NAME=name, TYPE_COLUMN=system_type_name
   FROM sys.dm_exec_describe_first_result_set(''DECLARE 
   @tvp $--RADHE--$; SELECT * FROM @tvp;'',null,null)
   ORDER BY column_ordinal;';

SELECT @sql += REPLACE(@stub, N'$--RADHE--$', 
  QUOTENAME(s.name) + N'.' + QUOTENAME(t.name))
FROM sys.table_types AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id];

INSERT …
Run Code Online (Sandbox Code Playgroud)

sql-server scripting sql-server-2016 user-defined-table-type automation

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

如何列出安装在 sql server 实例中的所有功能?

还有其他与安装相关的问题,这里这里有类似的细节。

我找不到任何相关的东西listing the installed features in sql server 2016

我可以手动查看日志 - 根据下面的信息,但我想自动化它。

安装 SQL Server 2016 后,我得到一个日志文件 - 位于以下文件夹中的某处:

C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log\20200109_205540

在此处输入图片说明

名称以Summary_+开头的文件my_server_name

在该文件中,除其他外,我可以找到已安装的 Sql Server 功能列表: 在此处输入图片说明

安装后,稍后当系统已在使用时,应用登录和权限,修复防火墙等。

有没有一种简单的方法来获取安装在 sql server 实例上的功能列表?

sql-server logs installation sql-server-2016 automation

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

跟踪标志正在运行,但在发生死锁时没有消息

跟踪标志用于临时设置特定服务器特征或关闭特定行为

有关跟踪标志的更多信息在这里

DBCC TRACESTATUS
Run Code Online (Sandbox Code Playgroud)

以上是显示当前在我的系统上运行的所有跟踪标志的命令。

在此处输入图片说明

我有两个问题:

1) 除了DBCC TRACESTATUS?之外,还有其他方法可以找到当前正在运行的跟踪标志列表吗?

2) 可以在上图中看到跟踪标志 1222 处于活动状态,但发生死锁时我没有收到任何电子邮件。还需要做什么?

sql-server deadlock dbcc scripting automation

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

备份所有数据库的脚本

我正在 SQL 2008 R2 Express 上自动备份 SQL Server 数据库。这些备份由 Windows 任务计划程序每天启动,它执行一个批处理文件,然后执行一个 SQL 脚本。我无法使用 SQL 代理,因为这是快速版本。

目前,我正在编写一个脚本,一个一个备份每个数据库。然而,这是相当高的维护 - 每次添加、删除或重命名数据库时,我都必须修改此脚本以反映这些更改。相反,我想编写一个 SQL 脚本来一次备份所有数据库,而不需要一个一个地明确备份每个数据库。

这是当前用于备份单个数据库的脚本:

Print 'Backing up MyDatabase...'
BACKUP DATABASE MyDatabase
TO DISK = 'F:\Backups\SQL Databases\MyDatabase.bak'
   WITH FORMAT,
      NAME = 'Full Backup of MyDatabase';
GO
Run Code Online (Sandbox Code Playgroud)

如何枚举所有数据库的列表并执行循环以对所有数据库执行此备份?

只是备份过程的一些附加说明:

  • Windows 中的计划任务每​​天晚上 9:00 执行批处理文件
  • 批处理文件调用执行 SQL 脚本的 OSQL
  • OSQL 输出保存结果的文本文件
  • 大约有30个数据库需要备份
  • 一些数据库超过 2GB(所以需要一些时间)
  • 第三方备份服务获取生成的备份文件,并在每晚午夜将其推送到异地

sql-server backup scripting automation

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

是否可以仅在订阅者中更改表的主键(从非集群到集群)而不破坏复制?

我有一个表,它有一个聚集唯一索引和一个与索引结构相同的非聚集主键。

IF OBJECT_ID('[dbo].[tblBAccountHolder]') IS NOT NULL 
DROP TABLE [dbo].[tblBAccountHolder] 
GO
CREATE TABLE [dbo].[tblBAccountHolder] ( 
[lngParticipantID]  INT                              NOT NULL,
[sdtmCreated]       SMALLDATETIME                    NOT NULL,
[strUsername]       VARCHAR(20)                          NULL,
[strPassword]       VARCHAR(20)                          NULL,
[tsRowVersion]      TIMESTAMP                        NOT NULL,
CONSTRAINT   [PK_tblAccountHolder]  
PRIMARY KEY NONCLUSTERED ([lngParticipantID] asc),

CONSTRAINT   [IX_tblBAccountHolder__lngParticipantID]  
UNIQUE CLUSTERED    ([lngParticipantID] asc) 
WITH FILLFACTOR = 100)
Run Code Online (Sandbox Code Playgroud)

正如您在定义中看到的那样,只有一列:

 CREATE  UNIQUE CLUSTERED INDEX IX_tblBAccountHolder__lngParticipantID 
 ON [dbo].[tblBAccountHolder] (  [lngParticipantID] ASC  )  
Run Code Online (Sandbox Code Playgroud)

我想删除唯一索引,并更改主键以使其成为集群。我将保留相同的主键,只需将其从非集群更改为集群。

该表是事务复制的一部分,我只会在订阅者数据库上完成此操作。不在发布者中。

这是一个包含超过 9,293,193 行的表格。

我会搞砸复制吗?

问题是我必须删除主键约束并将其重新创建为集群。

这是我想在订阅者数据库中完成的操作:

drop INDEX IX_tblBAccountHolder__lngParticipantID 
        ON [dbo].[tblBAccountHolder]  
GO

ALTER TABLE [dbo].[tblBAccountHolder] 
       drop CONSTRAINT …
Run Code Online (Sandbox Code Playgroud)

replication sql-server transactional-replication sql-server-2014 automation

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