小编Rac*_*SQL的帖子

有没有办法列出数据库的“上次备份”文件?

我正在尝试做一些非常简单的事情,但有一个问题:

declare @cmd varchar(1000)

set @cmd='restore verifyonly from disk =''\\server\backup_folder\''?'''

exec sp_msforeachdb @cmd
Run Code Online (Sandbox Code Playgroud)

显然它不起作用。我需要运行备份文件的名称Verifyonly(在上面的代码中,我使用的是数据库名称)。

有没有办法自动化Verifyonly,在所有备份文件中运行?

如何在我的代码中使用已创建的备份文件的名称?

非常感谢。

(人们MsForeachdb说不安全。我会尝试搜索另一个选项,例如Foreachdb

SQL 服务器 2008

EDIT1:嗯,正如我在这里看到的,我认为这不是verifyonly一个好主意,但知道如何去做会很好(仅用于知识)

sql-server-2008 backup

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

列出某个用户的所有数据库(SQL Server 2008 R2)

我真的在寻找这个答案有一段时间了。我敢打赌这里有一个帖子,但是,我真的找不到(即使在 google 上)。

我认为这是一项简单的任务。

我想列出特定用户的所有数据库。

有没有办法做到这一点?

它可以是视图或游标。我就是想不出什么。

permissions sql-server-2008-r2

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

恢复 SA 密码 - PSTools - 不工作

我在一家新公司,我看到的第一件事是他们甚至不知道他们有多少个实例。他们没有密码,老 DBA 不知道他在做什么。

长话短说,我几乎可以在每台服务器上创建我自己的 sysadmin 帐户(我将所有数据库仅移动到 1 或 2 个实例),但有些我做不到。

mssqltips 的这个链接中,有一个名为PsExec的工具。按照教程,我可以运行该程序并使用NT AUTHORITY\SYSTEM. 但它不起作用。NT AUTHORITY\SYSTEMPublic,我无法使用 sysadmin 添加我的帐户。该程序是否只能与 SQL 2008 一起运行?

没有办法停止服务器,因为我们的数据库在巴西各地运行。

这里的帖子数不胜数,但几乎每个人都需要重新启动SQL Server。

怎么重置sa密码?

如何在不存在 sysadmin 帐户的情况下将 sysadmin 添加到 SQL Server 2008 中的用户(这个是关于该程序的,但正如我所说,它对我不起作用(他使用的是 2008))。

在此处输入图片说明

在这个视频中,他使用了这个-M方法。有人已经在 SQL Server 2014 上测试过了吗?我想知道,我会尝试。

我可以与NT AUTHORITY\SYSTEM用户连接,但是当我尝试创建 sysadmin 登录名或更改 sa 密码时,它说我无权这样做。然后,看看 nt 权利,它是公开的。我可以-m在我的机器上使用这个技巧来更改 sa 登录名,但我想要一些不需要关闭 SQL 的东西。

security sql-server permissions sql-server-2014

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

日志传送“不同步”但没有作业失败

我已经配置了从服务器到同一台服务器的日志传送,只是使用了不同的实例。


Primary server 是这样配置的:

LSBACKUP_MyDatabase - 每 25 分钟

Secondary server

LSCOPY_MyDatabase - 每 1 分钟

LSRESTORE_MyDatabase - 每 10 分钟


发生的情况是,主要备份作业运行良好(还有更多历史记录,我只显示最后 2 个)。

在此处输入图片说明

在文件夹中,我可以看到 TRN 文件。

在此处输入图片说明

在第二个实例,LSCOPY并且LSRESTORE是OK了。它正在复制文件,但问题就在这里。还原作业正在报告此“消息”(作业成功运行,因此我认为这不是错误):

信息

2015-12-29 09:10:02.41 跳过日志备份文件。辅助数据库:'MyDatabase',文件:'\ServerIP\instancia g\BACKUP\Log_Sp_Secundario\MyDatabase_20151229104500.trn'

2015-12-29 09:10:02.41 找不到可以应用于辅助数据库“MyDatabase”的日志备份文件。

2015-12-29 09:10:02.42 恢复操作成功。辅助数据库:'MyDatabase',恢复的日志备份文件数:0

2015-12-29 09:10:02.42 删除旧的日志备份文件。主数据库:'MyDatabase'

2015-12-29 09:10:02.42 恢复操作成功。辅助 ID:'5a0a361c-039c-40a3-9c39-af5e338c7f72'

然后,当我单击查看LSALERT_作业的历史记录时,它会报告错误并显示以下消息:

在此处输入图片说明

消息以用户身份执行:CMDO\gdladmin。日志传送辅助数据库 VMWGDLPRD04\GDLIC2014.GDL_IC 的还原阈值为 45 分钟,并且不同步。8323 分钟内未执行任何还原。恢复的延迟为 0 分钟。检查代理日志和日志传送监控信息。[SQLSTATE 42000](错误 14421)。步骤失败。

根据 Microsoft 的支持页面之一,此查询可显示日志之间是否存在间隙。没有了:

SELECT 
    s.database_name,s.backup_finish_date,y.physical_device_name
FROM 
    msdb..backupset AS s INNER JOIN
    msdb..backupfile AS f ON …
Run Code Online (Sandbox Code Playgroud)

sql-server log-shipping

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

“sp_configure 允许更新”有什么作用?

今天我收到一个错误 (DTSER_FAILURE),但我可以通过编辑维护计划来修复它(这个错误是由于维护计划搜索已删除的数据库,而我在设置中使用了“选定的数据库”)。

但是在互联网上,我读了一些帖子说我应该SP_CONFIGURE 'ALLOW UPDATES',0

这个选项有什么影响?

我在 Microsoft 页面上读到此选项无效并且已弃用。

sql-server backup maintenance-plans sql-server-2014 sp-configure

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

删除数百万行禁用索引

我有一个包含数百万行的表。我正在删除where year(data) in (2013,2014,2015)。需要4个多小时。我现在试图只删除 2013 年,但它仍然非常非常慢(每年都有超过 600.000 行,并且有一varbinary列用于存储 .PDF 文件)。

我知道索引会降低删除的性能。该Disable表中的两个索引都将是一个好主意,然后重新启用它们?

在此处输入图片说明

如果我创建一个视图并从视图中删除它会更快吗?


编辑:

我做了这个查询以通过前 1 删除它:

delete top (1) from MyTable where year(data) in ( 2013)--,2014,2015)
while @@rowcount > 0
    begin
    delete top (1) from MyTable where year(data) in ( 2013)--,2014,2015)
    end
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2014

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

在 SQL Server Express 上启用管理员连接以修复登录触发器

好吧,幸运的是我在我的测试环境中遇到了这个错误。我非常害怕这个错误,以至于我禁用了我在生产环境中使用的所有登录触发器。

我创建了著名的登录触发器,并将数据库置于离线模式,只是为了处理其他事情。然后我发现因为触发器找不到表,所以我不能再访问实例了。有很多与此相关的问题,但即使做了我能找到的一切,我仍然无法访问该实例,即使使用 SQLCMD 也无法访问。

我这样做:

sqlcmd -S server\instance -U sa -P <pass>  -A
Run Code Online (Sandbox Code Playgroud)

如果我不使用,-A我会收到著名的错误:

logon failed for sa due trigger execution.
Run Code Online (Sandbox Code Playgroud)

如果我使用-A

Sqlcmd:错误:Microsoft ODBC Driver 11 for SQL Server:SQL Server 网络接口:获取专用管理员连接 (DAC) 端口时出错。确保 SQL Browser 正在运行,或检查端口号 [xFFFFFFFF] 的错误日志。. Sqlcmd:错误:用于 SQL Server 的 Microsoft ODBC 驱动程序 11:登录超时已过期。Sqlcmd:错误:Microsoft ODBC Driver 11 for SQL Server:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。

为什么我无法连接到sql server

sql server express 在这里。

我可以启用 SQL Browser,但我仍然无法访问它。

我不认为这个问题是重复的,因为不是关于触发器,而是关于为什么我无法使用 SQLCMD 访问服务器。我几乎知道如何解决这个问题。我只是不知道如何在不触发触发器的情况下访问 sql server。

trigger sql-server sql-server-express dac

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

请赐教有关 FILESTREAM 和 BLOB 文件的信息

这对我来说真的是一个令人困惑的话题。

我可以理解 BLOB 是什么,我可以轻松使用它。我能理解 FILESTREAM 是什么。我可以轻松地在数据库中实现,我可以备份数据库并使用为存储这些文件而创建的文件夹来恢复它。像这样的事情,我想,我能理解。

我不明白的是:

  1. .PDF仅使用数据库中的 VARBINARY(MAX) 列插入(例如)与将其存储.PDF在 FILESTREAM 数据库中有什么区别。我知道 BLOB varbinary(max).PDF是在数据库内部。如果我物理删除.PDF,我仍然可以使用存储在 varbinary(MAX) 列中的值来恢复它吗?

  2. 当我在.PDF文件流中插入这个文件时,我可以在文件夹中看到它(为文件组创建的那个),如果我插入 100 个文件,我可以在文件流文件夹中看到 100 个文件,但是当我运行DELETE FROM并删除 100 行时数据库,我仍然可以在文件流文件夹中看到这些文件。为什么会发生这种情况?我认为,为了保持一致性,这些文件也会被删除。

  3. 对于这两种情况,在.PDFBLOBVARBINARY(MAX)或 FILESTREAM 中插入文件后,我还需要原始文件吗?因为它在数据库中,所以我可以很容易地恢复它。

我以 .PDF 为例

我可以使用和实施这两种方法,但我仍然不清楚它们会发生什么。对我来说,它是一样的,但是一个存储在数据库之外,另一个存储在数据库内。

sql-server sql-server-2008-r2 filestream blob varbinary

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

如何为 Azure SQL 创建作业?

我正在尝试为我们的 Azure 服务器(用于 sql 数据库)创建一些作业。

我正在互联网上阅读它,并试图在这里找到一些问题但没有成功。

有一个链接说我需要在市场上下载一些东西。我什至无法通过寻找找到这样的应用程序。

有没有办法像我们在 SQL Server 上创建作业一样创建作业?

azure-sql-database

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

sys.sp_reset_connection。为什么有很多?

这里有很多关于 DBA EXCHANGE 的问题。但他们都帮不了我。

我有两个问题:

1)使用sp_whoisactive,我发现了很多sys.sp_reset_connection;1(我知道它们是sp_reset_connections因为我使用了dbcc inputbuffer(SPID):

大量重置

这是“主服务器”,因此其他服务器( 3,4,7 )在这里不断请求某些数据库的信息(我看到的是,每个请求都是针对 MASTER 数据库的)。

数据库


2)他们为什么要花这么多时间?

看这里的一些答案,发现系统在等待CPU。但所有 CPU 都是空的。这怎么会是问题?

在幕后,SQL Server 使用 sp_reset_connection 逻辑来“重置”SQL Server 的连接状态,这比建立全新的连接更快。较旧的驱动程序将过程调用作为单独的 TDS 往返发送到 SQL Server。
较新的客户端驱动程序在下一个命令中添加了一个标志位,从而避免了额外的网络往返。

很好……但我还是不知道该怎么办。

这不会给我带来问题。我只想知道如何解决这个问题。

sql-server sql-server-2008-r2 connections

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