Questions tagged «sql-server-2012»

SQL Server 2012(主要版本11.00.xxxx)。还请标记sql-server。

6
SQL Server Management Studio 2012:如何在SSMS项目中包含文件夹?
我正在使用SSMS 2012与我们使用的SQL Server 2012和Azure SQL服务器进行通讯。我承认我不是SQL专家,所以我一直在保存大多数SQL脚本以供将来参考。我很快在SSMS项目中遇到了20个左右的.SQL脚本,它们都位于同一个“查询”文件夹下。 有没有一种方法可以在项目中创建“子文件夹”,以便我可以正确地组织脚本?其他大多数人如何使他们的脚本井井有条?我很确定这是否会像我一样困扰新手,对于真正的管理员(可能有数百个脚本?),这一定是一个真正的问题。

5
当强制实施IsDeleted(软删除)时,合适的索引体系结构是什么?
当前,我们有一个功能齐全的现有数据库和应用程序。我目前无法更改架构。今天,数据库中的每个表都有一个“ IsDeleted” NOT NULL BIT字段,默认值为“ 0”。当应用程序“删除”数据时,它只是将IsDeleted标志更新为1。 我无法理解的是每个表的索引应如何构造。现在,每个查询/联接/等总是执行IsDeleted检查。这是我们开发人员必须遵循的标准。话虽这么说,我试图确定是否需要更改每个表上的所有群集主键索引,以包括主键和IsDeleted BIT字段。另外,由于每个查询/加入/等。必须执行IsDeleted检查,是否适当地假设每个单索引(以及非聚簇索引)都应将IsDeleted字段包括为索引的第一个字段? 我还有一个问题是关于过滤索引的。我知道我可以在诸如“ WHERE IsDeleted = 0”之类的索引上放置过滤器,以减少索引的大小。但是,由于每个联接/查询都必须实现IsDeleted检查,这是否会阻止使用过滤后的索引(因为联接/查询中使用了IsDeleted列)? 请记住,我没有能力更改IsDeleted方法。

3
将SQL Server中的兼容模式从100更改为110的含义
我有一个Mydatabase在SQL Server 2008 R2中创建的数据库。我已升级到SQL Server 2012。 我正在尝试执行以下查询以计算百分位数 select Distinct [KEY],PERCENTILE_CONT(0.25) within group(order by EachPrice) OVER(Partition By [KEY]) As Q1,PERCENTILE_CONT(0.50) within group(order by EachPrice) OVER(Partition By [KEY]) As Q2, PERCENTILE_CONT(0.75) within group(order by EachPrice) OVER(Partition By [KEY]) As Q3, PERCENTILE_CONT(1) within group(order by EachPrice) OVER(Partition By [KEY]) As Q4 from Mydatabase …

2
SQL语句是否可以在SQL Server的单个会话中并发执行?
我已经编写了一个使用临时表的存储过程。我知道在SQL Server中,临时表是会话作用域的。但是,我无法找到有关会话功能的确切信息。特别是,如果此存储过程有可能在单个会话中同时执行两次,则该过程中的事务需要更高的隔离级别,因为这两个执行现在共享一个临时表。

3
在IF EXISTS中包装查询会使它非常慢
我有以下查询: select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) 上面的查询将在三秒钟内完成。 如果上面的查询返回任何值,我们希望存储过程为EXIT,因此我将其重写如下: If Exists( select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) ) Begin Raiserror('Source missing',16,1) Return …


3
为什么SQL Server会忽略索引?
我有一个表,CustPassMaster其中有16列,其中一个是CustNum varchar(8),并且创建了一个index IX_dbo_CustPassMaster_CustNum。当我运行SELECT语句时: SELECT * FROM dbo.CustPassMaster WHERE CustNum = '12345678' 它完全忽略索引。这让我感到困惑,因为我还有另一个表,CustDataMaster其中包含更多列(55),其中一个是CustNum varchar(8)。我IX_dbo_CustDataMaster_CustNum在此表的此列()上创建了一个索引,并使用了几乎相同的查询: SELECT * FROM dbo.CustDataMaster WHERE CustNum = '12345678' 它使用我创建的索引。 这背后有什么具体的理由吗?为什么要使用from的索引CustDataMaster,而不使用from的索引CustPassMaster?是由于列数少吗? 第一个查询返回66行。对于第二个,返回1行。 另外,还要注意:CustPassMaster具有4991条记录和CustDataMaster5376条记录。这可能是忽略索引的原因吗?CustPassMaster也有具有相同CustNum值的重复记录。这是另一个因素吗? 我将此主张基于两个查询的实际执行计划结果。 这是DDL CustPassMaster(具有未使用的索引的DDL ): CREATE TABLE dbo.CustPassMaster( [CustNum] [varchar](8) NOT NULL, [Username] [char](15) NOT NULL, [Password] [char](15) NOT NULL, /* more columns here */ [VBTerminator] …


2
SQL Server 2012将备份还原到新的数据库名称
我似乎还记得,在2008年,您可以通过更改restore-wizard中“ Destination Database”字段中的名称来将备份还原到数据库的新副本。它将创建一个全新的数据库,该数据库是还原到所需时间点的原始数据库的副本。我一辈子都没有想过如何使SQL 2012做到这一点。 现在,我了解到(感谢Aaron Bertrand)这并没有真正改变,而2012年实际上让我更清楚地看到,这种策略首先是一个坏主意! 因此,我需要做的是:使用备份数据库从现有数据库“ MyDB”创建一个新数据库“ MyDB_Copy”。我们有每晚的完整备份(.bak)和每15分钟的TLogs(.trn)。我根本不希望现有的“ MyDB”受到影响/触动,因为它是“实时的”。 从主要的完整备份文件创建MyDB_Copy之后,我需要还原几十个TLog备份以使其到达某个时间点。

7
使用WITH REPLACE还原备份时出现错误3154
我的计算机上安装了SQL 2012 SP1。我备份了一个数据库test.bak。 我有一个名称test2相同的数据库,但是数据已更改。 我想test.bak通过test2数据库还原。 我总是收到错误: 错误3154:备份集保存现有数据库以外的数据库的备份。 我试过了: 我右击 test2 -> Restore database -> From device 我选择test.bak并检查了With Replace但出现错误。 然后我尝试右键单击 test2 -> Restore file and filegroups 我选择test.bak并检查了With Replace但出现错误。 我可以删除旧数据库,然后使用正确的名称还原备份,但是当我使用SQL 2008时,在现有数据库上进行还原没有问题。 似乎因为我使用SQL2012,所以我经常收到此错误!


7
使用DTS导入/导出向导导入数据时如何处理FK约束?
我正在尝试使用SQL Server导入和导出向导将数据从生产数据库复制到开发数据库,​​但是当我这样做时失败,并显示错误“ INSERT语句与FOREIGN KEY约束冲突”,我有40多个表FK约束,是否有一些简单的方法可以解决此问题,而无需编写放置约束/添加constrat脚本? 编辑:我刚刚发现,在我正在运行的Web版本的SQL Server中,DTS不允许您保存软件包。

3
消除会降低性能的键查找(集群)运算符
如何在执行计划中消除键查找(集群)运算符? 表tblQuotes已经有一个聚集索引(QuoteID)和27个非聚集索引,因此我尝试不再创建任何索引。 我QuoteID在查询中放入了聚集索引列,希望对您有所帮助-但不幸的是还是一样。 执行计划在这里。 或查看它: 这就是“关键点查找”运算符所说的: 查询: declare @EffDateFrom datetime ='2017-02-01', @EffDateTo datetime ='2017-08-28' SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED IF OBJECT_ID('tempdb..#Data') IS NOT NULL DROP TABLE #Data CREATE TABLE #Data ( QuoteID int NOT NULL, --clustered index [EffectiveDate] [datetime] NULL, --not indexed [Submitted] [int] NULL, [Quoted] …


2
较新版本的SQL Server不稳定吗?
我们的数据库架构师告诉我们的客户,SQL Server 2014比2012年是一个糟糕的选择,因为它缺乏2012年所具有的性能和稳定性优势。我读过的所有内容都与此矛盾。 亚伦·伯特兰德(Aaron Bertrand)表示完全相反,我从MS那里阅读的所有白皮书也都同意-2014年得到了增强,解决了人们在2012年遇到的一些AG问题。 我错过了选择2014年而不是2012年的主要缺点吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.