Questions tagged «sql-server»

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

2
将bak文件还原为较小的mdf和ldf数据库文件
我有一个遗留下来的数据库,该数据库的设计缺乏噩梦,在这里我将不再赘述,但是服务器上的文件(相对)巨大。我有: MyDatabase.mdf:24.8GB MyDatabase.ldf:114.6GB 每天晚上,该数据库都会备份到.bak文件中,并运送到我们的报告服务器上,并在其中进行还原。.bak文件要小得多,只有1.8GB。 但是,当我尝试在报告服务器上还原它时,由于空间不足,它失败了。服务器上大约有100GB的可用空间,它正试图吞噬原始服务器上所用文件的全部139.4GB。除非我对压缩的认识完全错误,否则我非常有信心1.8GB文件实际上不会扩展7400%。 我的问题:有什么方法可以告诉SQL Server还原此备份文件而无需预先保留该空间?我不在乎任何日志;我只需要那里的数据。我从开发和架构的角度理解数据库,但是我绝不是任何类型的DBA。 这是在SQL Server 2008 R2上。感谢您的帮助或建议。

2
哪些客观因素表明是时候实施SQL Server复制了?
我正在努力在数据库的高性能与易于维护之间取得平衡。我们正在考虑通过将SSRS报告复制到与事务数据库物理上分离的数据库中来提高性能。但是,从开发人员的角度来看,启用复制有许多缺点: 这使架构更改更加困难 它会干扰我们的自动化集成/构建服务器 似乎很难实现SQL源代码控制 我的问题是:鉴于这些缺点,您何时知道该进行复制的时候了?您如何确定额外的复杂性是否足以证明收益? 我们之前已经使用过它,所以设置它不是问题。这更多地是关于决定是否启用它的决定。我正在寻找一些其他人在复制中观察到的对象性能指标。 当然,最好的办法是在我们自己的服务器上进行一些模拟的负载测试,然后自己找出来,但我希望那里有一些通用的准则。

2
用户定义的表类型的sp_executesql行为不正确
问题:用户定义的表类型作为sp_executesql的参数是否存在已知问题?答案-不,我是个白痴。 设置脚本 此脚本分别创建表,过程和用户​​定义的表类型中的一种(仅限受限SQL Server 2008+)。 堆的目的是提供一个审核,是的,数据已进入过程。没有约束,没有什么可以防止数据被插入。 该过程将用户定义的表类型作为参数。proc所做的所有操作都是插入表中。 用户定义的表类型也很简单,只有一列 我已经针对以下命令运行了11.0.1750.32 (X64) ,10.0.4064.0 (X64)是的,我知道该盒子可以打补丁了,我无法控制。 -- this table record that something happened CREATE TABLE dbo.UDTT_holder ( ServerName varchar(200) , insert_time datetime default(current_timestamp) ) GO -- user defined table type transport mechanism CREATE TYPE dbo.UDTT AS TABLE ( ServerName varchar(200) ) GO -- stored …

5
如何恢复SQL Server 2008 R2性能计数器?
我正在Windows 7 x64上运行SQL Server 2008 R2 Developer,作为默认实例。由于某种原因,SQL Server的性能计数器似乎已消失。SELECT * FROM sys.dm_os_performance_counters返回零行。 我试过跑步lodctr /T:perf-MSSQLSERVERsqlctr.ini。尽管它顺利完成,但是即使重新启动Remote Registry服务之后,它也无法解决任何问题。实际上,perfmon现在缺少这些计数器。unlodctr MSSQLSERVER仍然说没有安装计数器,但是lodctr /Q:MSSQLSERVER说它们已经存在并启用了。常规Windows和.NET计数器工作正常。 在Windows错误日志中,我看到错误8317: 无法查询与注册表项“ HKLM \ SYSTEM \ CurrentControlSet \ Services \ MSSQLSERVER \ Performance”关联的值“ First Counter”。SQL Server性能计数器被禁用。 我怀疑问题可能是由安装失败的SQL 2012 RC0触发的。除了重新安装SQL Server 2008 R2以外,如何恢复的任何建议?

5
SQL Server存储过程是否缓存数据结果?
我从朋友那里听说过,但是我从未调查过这是否正确。 是否将已执行查询的数据结果存储在缓存中? 我的意思是,如果我有一个存储过程,如: SELECT * FROM USERLIST ...是将结果(在这种情况下为用户列表)存储在高速缓存中是真的吗? 另外,如果我有这些: SELECT * FROM USERLIST WHERE user="user" SELECT * FROM USERLIST WHERE user="userzzz" (其中将user / userzzz作为参数传递),是否在数据库缓存中存储了2个不同的结果是否正确。 我不这么认为,但我希望得到您的确认,专家!

2
如何创建在镜像状态更改时运行作业/过程的事件通知
我按此顺序问这个问题。是否可以使用T-SQL通过TCP发送字符串? 雷木斯·鲁萨努(Remus Rusanu)暴露了似乎是解决我问题的最佳解决方案,但是...我还不成熟,无法理解和理解他所说的一切。 到目前为止,我认为我需要为DATABASE_MIRRORING_STATE_CHANGE创建通知事件,对吗? 我如何创建此事件通知,使其触发时在表中插入一行,该行存储时间戳和来自通知的ID。 到目前为止,我为每个ID设置了一个警报,每个警报都运行这样的工作(此示例的ID为1): DECLARE @state AS varchar(50); SELECT @state = mirroring_state_desc FROM SYS.database_mirroring WHERE mirroring_guid IS NOT NULL; IF (@state IS null) SET @state = ' '; INSERT INTO MirroringAlerts (DateTime, alertID, alertDesc, Sync, alertCreator) values (SYSDATETIME(), 1, 'Principal synchronized with W ', @state, @@SERVERNAME) 基本上,我在此数据库中创建一个内部日志: CREATE …

3
在SSMS中保存连接?
是否可以在SSMS(2008 r2)中保存某种会话或配置文件,以便在打开SSMS时打开与已保存的数据库服务器列表的连接? 因此,例如,我经常打开SSMS,然后连接到SQL Server NY-DB01,NY-DB02等。我是否可以使用某种快捷方式来一次性打开所有这些?

4
帮我为SQL Server 2008实例选择RAID级别组合
我将从头开始重建一台IBM 3400服务器。该服务器专用于在Windows 2008 R2上运行的SQL Server 2008实例。 我将进行新的RAID配置。我的机器内部有6个SCSI 73 GB驱动器和一个IBM ServerRAID 8K控制器。设置RAID级别的好方法是什么?我的控制器上应该有两个,三个还是一个字段? 我正在考虑提出以下解决方案之一: 使用所有磁盘并创建RAID 10池。 将4个磁盘用于RAID 1e池,并将其用于存储数据库数据和OS,将其他2个磁盘用于RAID 0池,并将其用于存储数据库日志。 其他组合。 较大的条带单元尺寸更好吗? 该服务器将成为复制数据库的订阅者。它的主要任务是报告和数据检索,仅复制代理进行写操作。数据库的大小约为90 GB。

1
从物理数据库迁移到云数据库
将在Microsoft SQL Server 2008R2中创建的物理数据库移动到SQL Azure上,这具有什么意义?该物理数据库利用了诸如varchar(MAX)FILESTREAM BLOBS上的全文本搜索之类的高级功能? 需要哪些体系结构更改?此过渡涉及哪些步骤?SQL Azure Migration Wizzard不能简单地成为自动进行过渡的魔术工具。迁移工具无法解决哪些兼容性问题,应“手动”解决?

3
包含列与过滤索引
我们目前正在使用名为tb_tranfers的表。该表有4000万行,大小约为26 GB(数据11 GB,索引15 GB)。 10%到15%的行是软删除的行(DeletedDate不为null)。该应用程序仅使用DeletedDate为null的行。对该表的所有查询都将包含一个用于此目的的子句。 该表上有15个索引。缺少索引DMV包含使用DeletedDate作为包含列创建索引的建议。 WHERE DeleteDdate IS NULL在所有11个非簇状索引上使用筛选索引是否有帮助?还是将DeletedDate列作为包含的列会更好?

2
为了最大程度地提高数据库性能,应在通过SSIS将大量数据加载到SQL Server 2008之后运行哪些命令
我写了一个SSIS包,将测试数据加载到一个空数据库中。一些表非常大(约7亿行)。SSIS软件包完成后,是否应该运行任何命令(作为学徒DBA!)以最大化数据库的性能? 例如,我执行了EXEC sp_updatestats但是它报告没有索引需要更新。 一旦加载了大量数据,是否有一系列事情要做?或者SQL Server 2008会为您完成所有这些工作吗?

2
使用单独的架构如何影响SQL Server 2008的性能?
我想在SQL Server 2008数据库中为具有不同目的的对象使用单独的架构。现在,我们使用一种令人费解的命名约定来表示表或存储过程的目的,并且前缀意味着我们必须扫描五个或六个xharacter才能看到唯一名称的开头。我想为仅用于驱动UI的表(菜单,人员角色等)和维表与事实表等使用单独的架构。 我的问题是,使用多种架构(方案?)会对所有事情都使用旧的dbo产生性能影响吗?

4
数据库设计中夸大字段大小
我的表中有一些字段是字符串,目前,大多数字段大小都有很高的字符限制。例如,街道名称为100个字符。使用大字段大小会受到惩罚吗?例如,如果我将此字段的限制更改为30个字符,那么尺寸会有所提高还是效率?大约有50个领域可能会缩小。 感谢您的建议。
11 sql-server 

2
@table_variable或#temp_table
我有一个具有129列的大用户定义表类型变量。我将一次在此表变量中存储大约2000-3000条记录,并将其传递给各种存储过程和函数以获取其他数据并进行修改。然后,这些其他数据和新的修改将存储在相同类型的新表变量中,并通过OUTPUT参数返回到源存储过程。(这是因为表类型参数只能作为传递READONLY。) 这是我的伪代码: SP1 @tmp tableType { INSERT @tmp EXEC SP2 (@tmp) INSERT @tmp EXEC SP3 (@tmp) } 我应该使用a @table_variable还是#temp_table?

4
是否有工具可以在两个不同的模式之间执行数据比较?
我们正在将数据库迁移到新架构,但要验证数据是否已正确移动。 如果架构相同,则传统的数据比较工具可以比较两个数据库之间的差异。在我们的案例中,表设计有所更改,但是旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此不能选择手动检查。 是否有任何工具可以帮助进行这种比较? 如果没有,那么是否有任何库/框架可以帮助启动定制解决方案的开发? 如果有必要,我很高兴使用特定于数据库的解决方案,在这种情况下,对于SQL Server 2008。 我的解决方案:我通过VIEW在旧数据库上创建每个表的字段与新数据库表相同的字段来比较这两个数据集。 然后,我使用这里描述的技术比较数据:在SQL Server中比较两个表的最短,最快和最简单的方法:UNION! 在这次迁移中,我很幸运,因为整个表的结构类似于旧数据库,其中字段从一个表移动到另一个表,或者被删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我会在视图中进行计算以提供正确的信息以进行比较。 该UNION比较显示我只能用不同的行,所以只要数据是正确的,我得到一个空的结果集。

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.