我的公司在一夜之间从 50 个 SQL Server 增长到 200 多个。帮助!
我的问题是:
我怎样才能在这么多服务器上执行 CU 更新并且仍然有生命并保持理智?SCCM 似乎无法执行 CU 更新。
有没有其他人能够在 100 台服务器上执行 CU 更新?
还有哪些其他选择?
我有一些 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 DB 迁移到新实例。
有人告诉我,可以从系统目录中的可用备份动态构建 RESTORE 脚本。
有谁知道一个示例脚本来做到这一点?
谢谢!
在我的数据库中,我有一个名为 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) 我正在调查其他 DBA 如何对其数据库备份执行自动定期测试以确保发生灾难时的可恢复性,我对我在该主题上发现的稀疏主题感到非常失望。
我将尝试在评论中描述我为我的公司提出的解决方案,但是你们如何确保您的备份实际上是可恢复的?
让我知道我是否应该在问题中改写或添加任何内容。
更新
经过一段时间和完善,我决定如果有人感兴趣,我决定发布我的脚本。https://github.com/curiebabz/SSARS
我需要从程序中确定在服务器上的每个 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。
我可以 使用以下任一脚本获取所有表类型的名称和定义:
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
我找不到任何相关的东西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 实例上的功能列表?
跟踪标志用于临时设置特定服务器特征或关闭特定行为
有关跟踪标志的更多信息在这里
DBCC TRACESTATUS
Run Code Online (Sandbox Code Playgroud)
以上是显示当前在我的系统上运行的所有跟踪标志的命令。
我有两个问题:
1) 除了DBCC TRACESTATUS?之外,还有其他方法可以找到当前正在运行的跟踪标志列表吗?
2) 可以在上图中看到跟踪标志 1222 处于活动状态,但发生死锁时我没有收到任何电子邮件。还需要做什么?
我正在 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)
如何枚举所有数据库的列表并执行循环以对所有数据库执行此备份?
只是备份过程的一些附加说明:
我有一个表,它有一个聚集唯一索引和一个与索引结构相同的非聚集主键。
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
automation ×11
sql-server ×10
scripting ×5
installation ×3
backup ×2
catalogs ×1
dbcc ×1
deadlock ×1
logins ×1
logs ×1
oracle ×1
patching ×1
permissions ×1
powershell ×1
recovery ×1
replication ×1
restore ×1