我正在创建一个脚本来将数据库从备份文件恢复到实例的默认位置,该位置远离系统数据库安装文件夹。
目前,我正在使用查找默认DATA位置
SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1
Run Code Online (Sandbox Code Playgroud)
和默认LOG位置
SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'mastlog.ldf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1
AND file_id = 2
)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在查询的帮助下找到数据库默认位置?
谢谢你的时间。
昨天我们有一个查询,旨在翻阅结果,但在结果的第一页上,查询只返回 4 条记录,而不是预期的 25 条。以任何方式更改查询都会导致 25 条记录,这对我来说意味着这是一次执行计划问题。我不熟悉在生产中查看执行计划的方法,并且在 sql studio 中运行查询没有导致相同的问题,可能是由于细微的差异。
我阅读了一些建议,认为这种事情可能是由损坏的索引引起的。我在数据库上运行了 checkdb 并没有发现错误。最后我清除了执行计划,一切都很好。
如果它不是某种类型的损坏问题,而只是非常具体的执行计划的问题,那么这是否意味着执行计划中存在错误并且我们在 SQL Server 中遇到了错误?我们在 SQL Server 2012 RTM 上没有更新,所以我查看了累积更新和服务包中所有修复的文档,但没有一个问题似乎与我们自己的相关。
关于可能导致这种情况的任何其他想法或想法?
(@P1 varchar(8000),@P2 bit,@P3 varchar(8000),@P4 bit,@P5 varchar(8000))
SELECT e.*
FROM (
SELECT
TOP 25
ROW_NUMBER() OVER (
ORDER BY AddedDate DESC
) AS Row,
ID
, Prefix
, FirstName
, LastName
, Company
, Address
, City
, State
, Zip
, Country
, WorkPhone
, HomePhone
, MobilePhone
, Email
, MailingLists
, AddedDate
, AwaitingOptin
, …Run Code Online (Sandbox Code Playgroud) 基于这篇文章,还原第一的黄金角色
恢复完整数据库备份后,恢复最新的差异数据库备份和之后的所有事务日志备份,使数据库恢复到当前状态。
差异备份保存自上次完整备份以来的所有数据更改。
我不明白为什么我们必须恢复事务日志备份,因为(完整数据库备份 + 差异备份)应该将我的数据库恢复到最新状态。
抱歉,我想不出更好的问题标题
我想检查 SQL 服务器数据库是否被修改。检查数据库被修改的原因是为了备份(sql 数据库备份)目的。所以我将首先进行完整备份,如果有任何数据插入、修改或任何结构或任何更改,那么我必须确定数据库中有一些更改并备份数据库。
可以根据频率(每天、每小时等)检查数据库中的变化。mdf 或 ldf 文件的修改日期不能用于检查数据库是否被修改。差异备份仅备份自上次备份以来的更改,但它有所不同,即使自上次备份以来没有更改,它也会进行备份,但大小会非常小(以 kb 为单位,您可以轻松测试)。
在 Windows NTFS 文件系统中,每个文件都存在 USN 日志,通过使用它我们可以检查文件是否被修改,如果修改,我们可以备份文件。这也在大多数备份软件中实现。
那么如何检查上次备份后是否对数据库进行了任何更改,以便在检测到任何更改时进行备份?
我有一个现有的表,我在其中添加了一个NgoId数据类型为int. 我想NOT NULL在列中添加 as 。
当我添加这个时,我收到以下错误:
无法修改表。无法将值 NULL 插入列“NgoId”、表“CSR.dbo.Tmp_tbl_post_category”;列不允许空值。插入失败。该语句已终止。
请帮助如何添加 NOT NULL 列。
我有一个创建如下的表。
CREATE TABLE [dbo].[Table1](
[ID] [INT] IDENTITY(1,1) NOT NULL,
[Title] [VARCHAR](255) NULL,
...
Run Code Online (Sandbox Code Playgroud)
假设最新的 ID 是 100(我有 100 条记录)
有没有办法到ALTER这个表的IDENTITY列并将自动增量值更改为现在 500?
所以最后我会得到这样的 ID 98, 99, 100, 500, 501, ....
我似乎无法在 T-SQL 中找到解决方案
我在我的 SQL Server 的 tempdb 之一上有一个奇怪的行为。
它有六个 tempdb 文件,根据 SSMS 和查询,都指向 S 目录。他们每个人都有 ~5gb 的初始大小。
奇怪的是 S 是法定人数,实际上只有 2GB 的可用空间。Tempdb 文件根本不存在于 S 及其子目录中。
问题是 tempdb 文件在哪里?:) 我怎样才能看到它们?
谢谢你。
sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012 tempdb
sSQL = "
SELECT ordID, ordName, ordDate, ordShipping, ordStateTax,
ordHandling, ordTotal, ordDiscount, ordPrivateStatus
FROM orders
WHERE (ordStatus = 7)
"
Run Code Online (Sandbox Code Playgroud)
我想将昨天收到的订单显示为我正在构建的每日报告脚本
我该怎么办?
SQL Server 2005
ordDate 有这种格式: 2015-01-28 14:58:49.000
我已经根据日期数据类型分区列对表进行了分区。
该列的数据从“ 2014-01-01 ”开始,到“ 2015-01-01 ”结束。我知道,分区的左右两端应该有空分区。因此,我在创建分区函数时选择了以下边界范围。分区函数如下所示,
create partition function PfDateRange(date)
as range right for values('2014-04-01','2014-07-01','2014-10-01','2015-01-01')
Run Code Online (Sandbox Code Playgroud)
我想听听一些选择边界范围的技巧或良好做法。
此外,将来可能会插入大于最后一个边界范围的数据。那么如何维护右端的空分区呢?
提前致谢。
我最近看到了在 SQL Server 代理下配置的某种 SQL 作业的导出,我也想实现它。不幸的是,我没有任何关于该报告作者的踪迹来询问他/她关于报告创建的问题,因此在这里寻求帮助,因为我没有运气在谷歌上搜索它或在这里搜索。
报告是在 excel 中的(所以我猜最初是一些 csv 或者直接是 xls)并且包含 SQL 实例中的每一个作业,每行一个步骤,最重要的是还包含每个作业步骤的脚本内容和一些进一步的细节。
例如,由于 SQL 仅具有默认作业 syspolicy_purge_history,因此导出的每个步骤将包含 3 行。
我似乎无法在导出中找到它作为任何构建,所以我想可能有一些查询,或者我在某处错过了这个
任何人都知道任何此类报告?欢迎任何帮助
sql-server ×10
backup ×1
ddl ×1
export ×1
identity ×1
partitioning ×1
restore ×1
ssms ×1
t-sql ×1
tempdb ×1