Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

1
估计突发使用的IO需求
我们有一个可以全天定期查询SQL数据库的应用程序。有零个活动周期或只有零个活动周期,并散布着对相对大量数据的单独请求。当这些请求出现时,主要目标是快速交付数据,次要目标是经济高效地完成数据处理。由于应用程序的性质,数据/索引不太可能会从先前的查询(不同的用户,在数据的不同部分上)缓存到RAM中。 对于使用率相对稳定的系统,我听说过经验法则以观察磁盘队列长度并使该数量保持较小。这将特别在AWS中运行,在该AWS中,我已经看到一条经验法则,即磁盘队列长度为每100 IOPS 1个是合理的。 我如何估算此类系统的IO要求?在处理单个突发查询时,磁盘队列长度是否是可靠的指标?我还应该考虑其他指标吗?

2
在位列上添加索引会大大降低插入速度吗?
我有一张桌子,上面有大约100万到500万条记录。该记录的一小部分将bit列之一设置为“ TRUE”。需要快速找到该记录。我认为该索引可以加快在此列上的搜索,但是我担心INSERT。因此,我的问题。 数据库的工作就像某种数据仓库,因此有很多SELECT和小的选择(每天最多10到20个),但有很大的INSERT(一次最多有20万条记录)。我担心导入数据库的时间较长。

3
如何从SQL Server数据库导出所有与安全相关的信息
你们可能知道,SQL Server没有提供开箱即用的解决方案来导出针对数据库中每个元素(在数据库级别以及对象级别)声明的所有与安全相关的语句。 我说的是提出这些信息的能力 所有用户 所有用户定义的角色 数据库级别的所有权限(例如GRANT CREATE FUNCTION) 对象级别的所有权限(例如,GRANT SELECT ON OBJECT :: xxx) 您可能会认为SQL Server必须具有类似这样的内容,但是SQL Server导出向导或通过右键单击对象而生成的各种脚本都不会捕获此信息。 我在网上看到了许多使用人们亲切发布的非精选脚本的“可能解决方案”,但是由于我必须100%确保捕获了所有安全信息,所以我不能完全依靠这些脚本。 我可以选择以这些为起点自己写东西,但我讨厌不得不重新发明轮子,以达到您认为很多人可能拥有的要求。 有人没有提供可以可靠地为您提供此信息的工具(作为SQL Server产品的一部分或第三方工具)吗? 或者至少,是否有一个社区支持的脚本,大多数人会同意“会做”? 谢谢!

1
将多个服务器登录名映射到一个数据库用户
这似乎是一个愚蠢的问题,但是尽管进行了一些研究,但我仍然无法找到与此有关的任何信息(可能是由于使用了错误的术语)。 是否可以将多个服务器登录名(SQL Server身份验证)记录到单个数据库用户(该用户具有作为数据库角色的成员所分配的权限)? 我有几十个sql登录名(sql服务器身份验证),它们需要从中央数据库读取一个设置,我宁愿将所有这些登录名映射到目标数据库中的单个DB用户,而不是为每个登录名创建一个自己的DB用户。 如果是,正确的T-SQL语法是什么?

3
db_owner无法删除数据库-错误615,SQL Server
我有一个在Amazon EC2上运行的SQL Server 2012数据库。我已经创建了一个用户,可以创建,编辑和删除数据库。我给新用户dbcreator担任服务器角色。 我的用户可以远程连接并成功运行create database foo;命令。但是,当用户尝试使用drop database foo;命令再次删除数据库时,失败并显示以下错误: Warning: Fatal error 615 occurred at Feb 1 2014 5:15PM. Note the error and time, and contact your system administrator. ErrorCode: 21 即使选择的数据库是master(所以我也不认为是因为它正在使用中)。当我再次运行该命令时,该命令成功,以管理用户身份登录。 我检查了新创建的数据库,并按db_owner预期向用户分配了该数据库中的角色,因此我的理解是,这对于该用户来说应该是足够的权限,以便能够删除他们刚刚创建的数据库。 根据http://technet.microsoft.com/zh-cn/library/ms178613.aspx,db_owner角色应具有足够的权限。“需要数据库的CONTROL权限,ALTER ANY DATABASE权限或db_owner固定数据库角色的成员身份。” 我查找了错误615,发现“找不到数据库表ID%d,名称为'%。* ls'。” 这对我来说毫无意义。http://technet.microsoft.com/zh-CN/library/aa937592(v=sql.80).aspx SQL Server版本信息:Microsoft SQL Server 2012 (SP1) - 11.0.3368.0 (X64) /n May …


1
如果在一个事务中对同一记录进行多次更新,那么将存储多少个版本?
根据Kimberly L. Tripp的MSDN文章,Neal Graves的“ 基于SQL Server 2005行版本控制的事务隔离 “ ... 特定记录的所有早期版本都链接在一个链表中;对于基于行版本控制的长期交易,每次访问都必须遍历该链接,以达到交易的一致版本行” 这在“了解行版本控制”部分中是通用的,可同时遵循“使用行版本控制提交的读取中的行版本控制”和“快照隔离中的行版本控制”部分。 此外,在仅通过SNAPSHOT中的多个事务(T1,T2,T3)对同一记录进行多次更新的情况下,给出了由于修改导致的行版本控制的示例。 如果只有一个事务多次(通过多个语句)更新一条记录,是否将存储(链接)多个版本存储,还是仅在拍摄SNAPSHOT“图像”时进行一个版本存储? 好吧,这个问题的答案应该立即回答我其他未解决的相关问题: 为什么行版本隔离使用记录版本的链接列表? RCSI使用的空间是否少于SNAPSHOT?为什么?

3
一两个索引?
我在数据库的表上创建了以下索引: CREATE INDEX [idx_index1] on [table1] (col1, col2, col3) 服务器建议以下“丢失”索引: CREATE INDEX [idx_index2] on [table1] (col1, col2) INCLUDE (col3, col4, col5, col6....) 在我看来,修改现有索引定义以包括建议的列,而不是创建需要维护的新索引,似乎是合乎逻辑的。在col1和col2上选择的查询可以与index2一样有效地使用index1。我是对的还是我可能错过了什么?

3
改善STIntersects的性能
表格T_PIN有300,000个图钉和T_POLYGON36,000个多边形。T_PIN具有此索引: CREATE SPATIAL INDEX [T_PIN_COORD] ON [dbo].[T_PIN] ( [Coord] )USING GEOGRAPHY_GRID WITH (GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = HIGH,LEVEL_3 = HIGH,LEVEL_4 = HIGH), CELLS_PER_OBJECT = 128, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]; T_POLYGON 有: …

3
错误:“要在sql服务器数据工具之外运行ssis软件包,必须安装Integration Services或更高版本的[发送成功的电子邮件]。”
注意,此标题的标题是该用户专有的逐字错误消息。该错误消息说明了dtexec应用程序中的错误,该错误将用户变量替换为错误消息字符串。在这种情况下,标准消息Standard E dition将替换为send successful email。 “标准”错误消息为: 说明:要在Business Intelligence Development Studio外部运行SSIS程序包,必须安装Integration Services的Standard Edition或更高版本。 版本SSIS2012。软件包最初是2005版本。打包在文件系统上。 主机1上的DB引擎/代理,主机2上的SSIS。 从主机2执行将成功运行。从主持人1执行将在问题主题中给出错误。看到了这篇文章,但是在主机1上安装了引擎和代理。有人看到过吗?搜索精确错误时,Google不会返回任何结果(主题行正确,错误消息中的措词不正确)。 谢谢!

5
释放未使用的空间SQL Server表
我在SQL Server 2012 Express中有一个表,其中有很多未使用的空间。 我需要释放数据库中的空间。 | NAME | 行| 保留 数据| INDEX_SIZE | 未使用 | ------------- | -------- | -------------- | ----------- --- | ------------ || -------------- | | MyTableName | 158890 | 8928296 KB | 5760944 KB | 2248 KB | 3165104 KB | 如何获得SQL释放3165104KB? 我已经尝试过: Alter table MyTableName …

5
如何从连接到同一工作组的其他计算机访问SQL Server数据库?
我创建了一个使用SQL Server数据库的C#应用​​程序。我有其他计算机连接到我,并且在工作组中彼此连接。我已经与他人共享了我的C#应用​​程序。当他们打开应用程序时,他们得到错误 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问 但是该应用程序在我的PC上运行正常。我正在使用的连接字符串是 Data Source=ASHISHPC1\SQLEXPRESS;Initial Catalog=ACW;User ID=ash159;Password=ashish159 存储在.config文件中。 该应用程序在我的PC上运行正常。我必须做什么?我已经在服务器中启用了TCP / IP,但是相同的错误仍然存​​在。连接字符串有其他变化吗?

4
如何找到未使用的索引?
我正在数据仓库中工作。我有多达2亿条记录的表。其中一些表具有大约20多个索引(我无法提供为什么首先创建它们的原因)。这使维护这些索引的工作变得非常痛苦,并且直接影响了DWH导入工作的性能和运行时间。 如何找到每个表上使用最少的索引?(为了摆脱它们)
11 sql-server  ssms 

2
SQL Server事务日志备份:测试尾日志是否紧随最近的已知日志备份
我们正在使用具有完全恢复模式的SQL Server。给定完整备份和一系列日志备份,我们希望能够检查从上次完整备份到当前尾日志的日志链是否完整。(实际上并没有还原这些备份;这里的目的是测试备份的一致性。) 我已经知道如何对现有备份执行此操作:使用RESTORE HEADERONLY,我可以获取每个文件的FirstLSN和LastLSN,可以对连续文件进行比较,以确定它们是否兼容。 但是,我不知道如何检查尾日志是否在上次日志备份之后。 如果我具有尾日志的FirstLSN,则可以将其与上一个日志备份的LastLSN进行比较。但是,如何获取尾部日志的FirstLSN? 我需要一个从SQL Server 2005向上运行的解决方案(最好使用t-sql)。到目前为止,我搜索Google均无济于事。顺便说一句。我首先将其发布在stackoverflow上。但是将其迁移到这里,因为它在此处被标记为脱位。 编辑 我在一个小示例(SQL Server 2005,9.0.5057)上尝试了两个提供的解决方案: BACKUP DATABASE TestDb TO DISK = 'C:\temp\backup test\Full.bak' -- fire some update queries BACKUP LOG TestDb TO DISK = 'C:\temp\backup test\Log1.bak' -- fire both queries from the provided answers: -- Martin Smith's answer yields: 838886656088920652852608 -- Shawn …

3
SQL Server 2008 R2的一般内存要求
我对DBA的工作没有经验,但是我正在尝试为SQL服务器请求更多资源,并希望我可以请一些聪明的人对应该运行的内容进行粗略的估计。我怀疑IT给生产sql服务器的资源分配很低。 硬件软件: 数据库:SQL Server 2008 R2企业数据库 Windows:Windows 2008 r2 Enterprise 64位,可以肯定在VMware上运行。 处理器:Intel(R)Xeon(R)CPU E7-4860 @ 2.27GHz 2.26 GHz(2个处理器) 安装的内存:4GB 数据库文件硬盘:300GB 备份硬盘:150GB 日志硬盘:100GB 应用: 我们有3个主要数据库,它们总共增加了大约170GB的数据,在同一服务器上的Reporting Services数据库(SSRS)可能每天存储10个不同的报告(每个报告平均包含70万条记录)。我们的用户群大约有20个同时用户,其中可能有5个被认为是“资源密集型”的,可以生成数据密集型大型报告。大多数用户通过asp.net网站和报表服务器网站与数据库进行交互。此外,我们的开发人员通过直接远程连接到服务器(最多2个远程连接),在BIDS中广泛使用SSIS。最后,我们有一个相当复杂的数据仓库操作,它可能每天也通过在服务器上运行的SSIS包带来300万条记录。 当前问题: 我们的服务器长期存在超时问题,对网站的响应时间非常糟糕。我怀疑我们拥有的内存量(4GB)可能是一个很大的瓶颈。我们先前对额外内存的请求已被拒绝,我们需要执行更多查询优化来获得共同的响应。虽然我们不是sql专家,也不是(我相信您可以通过我们的设置告诉您)db admin专家,但我想确保的是,如果硬件不是硬件,那么我不会花太多时间试图挤出一点潜在的性能瓶颈。 谢谢大家避免tl!dr!

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.