Questions tagged «sql-server-2008-r2»

SQL Server 2008 R2(主要版本10.50.xxxx)。请同时用sql-server标记。

2
在功能/存储过程创建时禁用架构检查
我正在尝试自动化对SQL Server 2008 R2数据库执行更改的过程。我放置的过程会删除并重新创建我的存储过程和函数,以及运行脚本来更改表/列/数据。不幸的是,其中一个脚本需要首先放置其中一个功能。但是我不能先运行所有存储的proc / function更改,因为它首先依赖于从表/列/数据更改脚本中添加的列。 我想知道是否可以在不通过SQL Server验证函数/ SP定义中使用的列的情况下运行存储过程和函数?我尝试查找,但找不到条件或命令来启用此功能。

1
如何在SQL Server盒上扩展卷?
这是针对系统操作员(或那些曾经经历过此经验的人)的问题。 我公司想在生产中的现有SQL Server盒上分配额外的磁盘空间。我们想知道是否可以联机完成扩展卷(在磁盘管理中为“扩展卷...”),还是需要关闭SQL Server服务。 为何应停止SQL Server Service来执行此操作,还是在白天只执行此操作可以吗? 以防万一系统规格相关。这是运行Windows 2012 R2和SQL Server 2008 R2的真实设备(无虚拟化)。 谢谢!

4
删除表字段后声明磁盘空间
我正在运行sql 2008 r2,并且数据库在过去3年中运行良好且运行迅速,直到大约3个月前,我们在非常活跃和使用过的表上添加了ntext字段。现在,由于此表的巨大扩展空间,我们开始摆脱服务器空间。 我读到收缩,我们不想失去db的索引,因为它的工作速度已经快了很多年了,我们也不想让碎片化花费。 我们决定删除该字段及其所有值: 是否可以删除ntext字段及其所有值并释放空间,而又不删除索引,不缩小索引,不降低数据库性能? 我附上数据库大小查询输出,以显示最近5个月的大小扩展。



4
SQL Server 2008 R2错误:15023,用户,组或角色已经存在
我的测试数据库存在权限问题。 我无法访问报告数据库,应用程序的帮助文档说要执行以下操作: Resolution: 1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases. 2. Expand the security folder. 3. Select logins and right click on the <username> user and choose properties. 4. Click the User Mapping tab 5.Make sure the …

1
SQL Server nvarchar(max)vs nvarchar(n)影响性能
这是SQL Server 2008 R2 SP2。我有2张桌子。两者是相同的(数据和索引),除了第一个表的VALUE列nvarchar(max)与第二个表的列相同nvarchar(800)。该列包含在非聚集索引中。我还在两个表上创建了聚集索引。我还重建了索引。此列中的最大字符串长度是650。 如果我对两个nvarchar(800)表运行相同的查询的速度始终更快,那么很多倍。当然,这似乎正在破坏“ varchar”的目的。表格包含800,000多行。该查询应查看大约110,000行(这是该计划的估计值)。 根据io统计信息,没有lob读取,因此所有内容似乎都在行中。执行计划是相同的,除了两个表之间的开销百分比略有不同,并且估计的行大小更大时nvarchar(max)(91字节对63字节)。读取次数也几乎相同。 为什么会有所不同? =====架构====== CREATE TABLE [dbo].[table1]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ProductID] [bigint] NOT NULL, [ProductSkeletonID] [bigint] NOT NULL, [Value] [nvarchar](max) NOT NULL, [IsKeywordSearchable] [bit] NULL, [ValueInteger] [bigint] NULL, [ValueDecimal] [decimal](18, 2) NULL, [ValueDate] [datetime] NULL, [TypeOfData] [nvarchar](20) NOT NULL, CONSTRAINT [PK_table1] PRIMARY …

3
在SAN环境中对SQL索引进行碎片整理有什么好处?
我们的SQL服务器位于SAN上。它包含数十个OLTP数据库,其中一些数据库包含100万条以上的记录。 我们每周运行Ola Hallengren的索引维护脚本,并且每次运行几个小时。根据碎片阈值,脚本将重新组织索引或为索引重新编制索引。我们已经观察到,在重新索引期间,日志文件会变得很大,这会导致日志传送过程中带宽的过度消耗。 然后是Brent Ozar的一篇文章,他说不再停止担心SQL索引: 您的硬盘驱动器与其他同时共享驱动器请求的服务器共享,因此驱动器将始终在各处跳跃以获取数据。整理索引碎片只是毫无意义的繁忙工作。 谷歌搜索这个问题会导致意见分歧,其中大多数观点似乎太简短或太弱。我们的暂定计划是调整维护脚本中的碎片阈值,以使其重新组织的频率比重新编制索引的频率高得多。 最终裁决是什么?考虑到每周运行维护工作所带来的负担,是否值得对SAN上的SQL索引进行碎片整理?

2
SQL Server-增长数据库文件的最佳实践
我已经通过SQL Server 2008 R2中的数据收集器监视文件增长了两个星期。该数据库以每天约35(MB)的速度持续增长。该数据库尚未达到2 GB的初始大小。 数据库文件的自动增长设置为5MB,我想尝试另一种方法,所以我正在寻找建议和/或评论。 每个星期天晚上1:30 AM都会运行一项调优任务。该任务将: 检查数据库完整性 缩小日志文件–(可以,因为日志记录模式很简单) 收缩数据库 重组索引 重建索引 更新统计 清理历史 我想在每周调整计划中增加两个步骤: 如果使用的空间达到某个阈值或总大小,则将数据库文件增加500 MB。 如果使用的空间达到总大小的特定阈值,则将日志文件增加250 MB(缩小后)。 通过将增长负担放在离线时间,我希望通过减少重负载下的自动增长事件的数量来提高性能。 我有两个有关自动增长文件的问题。 放置文件增长步骤的最佳位置是在当前步骤之前还是之后? 如果我使用ALTER DATABASE|MODIFY FILE来增大文件,那么如何确定是否SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)呢?

2
SQL Server 2008-分区和聚集索引
因此,请允许我说我对数据库的设计没有完全控制权,因此,对于本场景而言,无法更改当前系统的许多方面。 关于我们应该如何重新考虑设计方面的评论可能是正确的,但无济于事:) 我有一个很大的表,大约150个字段宽,大约600m行,它驱动着大量的进程。这是在数据仓库的情况下,因此我们在计划的加载过程之外没有任何更新/插入,因此它的索引很高。 已做出尝试对该表进行分区的决定,并且我对索引已分区表有些担忧。我没有分区方面的经验,因此不胜感激任何输入或链接。我在BOL或msdn上找不到具体的位置。 目前我们群集上一个领域,我们称之为IncidentKey这是一个varchar(50),而不是唯一的-我们可以1-100记录与同一之间有IK(没有意见,请)。我们经常会在旧IncidentKey记录上获取新数据,因此也不是连续的。 我了解我需要IncidentDate在群集索引键中包含分区字段,以使分区正常工作。我在想IncidentKey, IncidentDate。 问题是,如果“新”分区中的记录应该在聚簇索引中“旧”分区中的记录之前,则聚簇索引的机制将如何在分区表的2部分键上工作? 例如,我有5条记录: IncidentKey Date ABC123 1/1/2010 ABC123 7/1/2010 ABC123 1/1/2011 XYZ999 1/1/2010 XYZ999 7/1/2010 如果我得到一条新记录,ABC123, 2/1/2011它将需要在聚集索引BEFORE中 XYZ999, 1/1/2010。这是如何运作的? 我假设使用碎片和指针,但是找不到具有双部分键的分区表上非分区聚簇索引的物理存储和配置的任何信息。

2
在dbo模式下未创建表
在SSMS中创建表时,我已经意识到,如果执行以下语句: CREATE TABLE [tableName]; 该表将在您自己的模式(而不是dbo)下创建。因此,为了在dbo模式下创建它,您需要像这样明确地声明: CREATE TABLE [dbo].[tableName]; 有谁知道一种方法(例如,服务器范围的设置),以便在创建表时不需要指定[dbo]部分?


1
资源池“内部”中没有足够的系统内存来运行此查询
我们的其中一台生产服务器正在报告日志中的错误 错误:701,严重性:17,状态:123 。资源池“内部”中没有足够的系统内存来运行此查询。 我搜索了此错误,发现它是一个错误,并且Service Pack 2有一个热修复程序。这些是服务器的详细信息: Microsoft SQL Server 2008 R2(SP2)-10.50.4000.0标准版(64位) 处理器数量:24(具有2个NUMA节点,每个节点具有12个内核) 内存:为SQL Server分配了24GB RAM。 查询批量/分钟:5000+ 我的问题是 为什么会出现此错误? 这是一个严重的问题吗? 我们该如何解决? 编辑内存状态: MEMORYBROKER_FOR_RESERVE (internal) Pages ---------------------------------------- ---------- Allocations 200362 Rate 4510 Target Allocations 200362 Future Allocations 588626 Overall 2521497 Last Notification 0 MEMORYBROKER_FOR_STEAL (internal) Pages ---------------------------------------- ---------- Allocations 431548 Rate 1973 …

6
查询行之间的详细差异以获取大量数据
我有很多大表,每个表都有> 300列。我正在使用的应用程序通过在辅助表中复制当前行来创建已更改行的“归档”。 考虑一个简单的例子: CREATE TABLE dbo.bigtable ( UpdateDate datetime, PK varchar(12) PRIMARY KEY, col1 varchar(100), col2 int, col3 varchar(20), . . . colN datetime ); 存档表: CREATE TABLE dbo.bigtable_archive ( UpdateDate datetime, PK varchar(12) NOT NULL, col1 varchar(100), col2 int, col3 varchar(20), . . . colN datetime ); 在上执行任何更新之前dbo.bigtable,会在中创建该行的副本dbo.bigtable_archive,然后dbo.bigtable.UpdateDate使用当前日期进行更新。 因此,按排序时,UNION将两个表放在一起并按分组可以PK创建更改的时间表UpdateDate。 …

2
如何检查非ASCII字符
检查VARCHAR字段是否包含非Ascii字符的最佳方法是什么? CHAR(1)通过CHAR(31)和CHAR(127)通过CHAR(255)。 我尝试使用PATINDEX,并遇到了以下问题。 检查下限范围是否正确。 SELECT * FROM mbrnotes WHERE PATINDEX('%[' + CHAR(1)+ '-' +CHAR(31)+']%',LINE_TEXT) > 0 我的数据有三个记录为0x1E,并且所有三个都返回了。 但是当我只检查上限时: SELECT * FROM mbrnotes WHERE PATINDEX('%[' + CHAR(127)+ '-' +CHAR(255)+']%',LINE_TEXT) > 0 它返回接近表中的所有记录(表计数170737和返回计数170735),并且由于我的数据在此范围内没有任何值,因此我认为它应该不返回任何记录。

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.