标签: sql-server

查找数据库默认位置

我正在创建一个脚本来将数据库从备份文件恢复到实例的默认位置,该位置远离系统数据库安装文件夹。

目前,我正在使用查找默认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)

有没有其他方法可以在查询的帮助下找到数据库默认位置?

谢谢你的时间。

sql-server sql-server-2008-r2 restore

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

执行计划的查询结果不正确,不确定问题的确切原因

昨天我们有一个查询,旨在翻阅结果,但在结果的第一页上,查询只返回 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-server sql-server-2012

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

Restore First 中事务日志的目的

基于这篇文章,还原第一的黄金角色

恢复完整数据库备份后,恢复最新的差异数据库备份和之后的所有事务日志备份,使数据库恢复到当前状态。

差异备份保存自上次完整备份以来的所有数据更改。

我不明白为什么我们必须恢复事务日志备份,因为(完整数据库备份 + 差异备份)应该将我的数据库恢复到最新状态。

抱歉,我想不出更好的问题标题

sql-server backup transaction-log

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

检查数据库是否已更改以确定是否需要执行备份

我想检查 SQL 服务器数据库是否被修改。检查数据库被修改的原因是为了备份(sql 数据库备份)目的。所以我将首先进行完整备份,如果有任何数据插入、修改或任何结构或任何更改,那么我必须确定数据库中有一些更改并备份数据库。

可以根据频率(每天、每小时等)检查数据库中的变化。mdf 或 ldf 文件的修改日期不能用于检查数据库是否被修改。差异备份仅备份自上次备份以来的更改,但它有所不同,即使自上次备份以来没有更改,它也会进行备份,但大小会非常小(以 kb 为单位,您可以轻松测试)。

在 Windows NTFS 文件系统中,每个文件都存在 USN 日志,通过使用它我们可以检查文件是否被修改,如果修改,我们可以备份文件。这也在大多数备份软件中实现。

那么如何检查上次备份后是否对数据库进行了任何更改,以便在检测到任何更改时进行备份?

sql-server

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

添加非空列

我有一个现有的表,我在其中添加了一个NgoId数据类型为int. 我想NOT NULL在列中添加 as 。

当我添加这个时,我收到以下错误:

无法修改表。无法将值 NULL 插入列“NgoId”、表“CSR.dbo.Tmp_tbl_post_category”;列不允许空值。插入失败。该语句已终止。

请帮助如何添加 NOT NULL 列。

sql-server sql-server-2008-r2 ddl

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

分配新的自动增量值

我有一个创建如下的表。

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 auto-increment t-sql sql-server-2008-r2 identity

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

Tempdb 文件不存在

我在我的 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

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

只需要根据日期查询记录(给出示例查询)

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

sql-server-2005 sql-server

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

选择分区边界范围以保持两端空分区的最佳实践?

我已经根据日期数据类型分区列对表进行了分区。

该列的数据从“ 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-server-2008-r2 partitioning

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

使用步骤和脚本导出 SQL 代理作业

我最近看到了在 SQL Server 代理下配置的某种 SQL 作业的导出,我也想实现它。不幸的是,我没有任何关于该报告作者的踪迹来询问他/她关于报告创建的问题,因此在这里寻求帮助,因为我没有运气在谷歌上搜索它或在这里搜索。

报告是在 excel 中的(所以我猜最初是一些 csv 或者直接是 xls)并且包含 SQL 实例中的每一个作业,每行一个步骤,最重要的是还包含每个作业步骤的脚本内容和一些进一步的细节。

例如,由于 SQL 仅具有默认作业 syspolicy_purge_history,因此导出的每个步骤将包含 3 行。

我似乎无法在导出中找到它作为任何构建,所以我想可能有一些查询,或者我在某处错过了这个

任何人都知道任何此类报告?欢迎任何帮助

sql-server export ssms sql-server-agent

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