数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

1
具有50个实例的SQL Server 2012 Standard服务器不会卸载实例
我怀疑这是一个问题,因为我们达到了SQL Server的50个实例的最大限制。自然,它不会安装更多实例。但是,似乎也不会卸载它们。更糟 在为实例选择SQL引擎之后单击下一步时,它将挂在“选择功能”对话框上。 我没有找到很多有关此的信息。最有趣的命中是:http : //social.msdn.microsoft.com/Forums/sqlserver/en-US/24a1e5f3-25f3-48c8-973a-4c6a18578e42/trying-to-uninstall-1-of-50-sql -server-2008-r2-express-hangs-on-please-wait 它还建议使用setup.exe一些参数来卸载实例,但是如果不启动GUI并进入失败的常规卸载,我将无法做到这一点。 高程无济于事。重新启动没有帮助。日志只说“被用户取消”,因为最后我必须将其杀死。在此之前,没有什么显而易见的。验证全部为绿色。 安装程序说它是SQL Server 2012 SP1-所有实例都位于11.0.2100。 我选择回答/关闭自己的问题,因为Microsoft已关闭故障单,其状态为“无法修复”。 希望他们会为SQL Server 2014修复此问题,但是我没有也不打算进行自我测试,也没有提供有关关闭票证的任何其他评论。

2
复合主键效率作为外键
我有一个带有复合主键(由4列组成)的表,该键用于确保没有重复项输入到表中。我现在需要一个新表,该表需要将该表中的键作为外键引用。 我的问题是哪种方法对查找速度更有效: 1)我是否创建包括所有4列的新表,并在外键中引用它们。 要么 2)我是否在主键表中创建了一个新的标识列,并将其用作新表中的外键。 预计该数据库将存储大量数据,因此到目前为止,我已经建立了该数据库,以最大程度地减少每个表中存储的数据量。考虑到这一点,选项2将是最好的方法,因为我将为每行保存2个int列和一个datetime列,但是我想避免不必要的增加查找时间。

1
如果交易是“已提交”的,那么可以确定将其保存吗?
如果事务成功提交,那么我能否100%确保已将其写入数据库和日志文件?我可以确定数据已保存吗? 今天,我们的日志文件已达到驱动器的极限,并且出现了很多错误。此外,其他一些服务崩溃了。我们增加了磁盘并重新启动了服务器。 在启动过程中,服务器进行了“数据库恢复”-我可以确定一切都还好吗?

1
在CREATE TABLE…AS SELECT中自动递增主键
我通过使用复杂的选择查询创建了表格CREATE TABLE ... AS SELECT...。如何在此查询中添加自动增量主键? 例如: create table `user_mv` select `user`.`firstname` as `firstname`, `user`.`lastname` as `lastname`, `user`.`lang` as `lang`, `user`.`name` as `user_name`, `group`.`name` as `group_name` from `user` inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`) left join `group` on (`group`.`group_id`=`user_groups`.`group_id`) where `user`.`lang`=`group`.`lang` 此查询创建一个包含表firstname,lastname,lang,username,group_name列。我希望它也具有id作为自动增量主键的列。 有什么办法可以通过更改此查询来做到这一点?我知道我可以通过在执行此查询后更改表来做到这一点,但是如果有任何直接在create table语句中执行此操作的方法,我想知道如何执行此操作。


2
是否有任何第三方工具可以读取和/或分析SQL Profiler跟踪(.trc)文件[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 5年前关闭。 我有一个DBA在我的数据库中所做的跟踪中的.trc文件。我的PC上没有安装SQL事件探查器工具,因此无法查看内容并分析跟踪日志。如何在PC上未安装SQL事件探查器的情况下读取此文件?
12 sql-server  trace 

2
MERGE是否使用tempdb?
考虑以下查询: MERGE [Parameter] with (rowlock) AS target USING (SELECT @AreaId, @ParameterTypeId, @Value) AS source (AreaId, ParameterTypeId, Value) ON (target.AreaId = source.AreaId AND target.ParameterTypeId = source.ParameterTypeId) WHEN MATCHED THEN UPDATE SET target.Value = source.Value, @UpdatedId = target.Id WHEN NOT MATCHED THEN INSERT ([AreaId], [ParameterTypeId], [Value]) VALUES (source.AreaId, source.ParameterTypeId, source.Value); 统计信息I / …
12 sql-server  t-sql 

2
SSIS 2012创建环境变量失败
我正在使用脚本将环境从一台服务器移植到另一台服务器。我遇到一个问题调用,catalog.create_environment_variable其中出现错误“输入值的数据类型与'String'的数据类型不兼容”。从过程“ check_data_type_value”出来。 奇怪的是,如果我让GUI脚本输出变量,该查询将起作用 DECLARE @var sql_variant = N'\\myserver\ssisdata' EXEC [catalog].[create_environment_variable] @variable_name = N'FolderBase' , @sensitive = False , @description = N'' , @environment_name = N'Development' , @folder_name = N'POC' , @value = @var , @data_type = N'String' GO 但是,采用这种脚本方法无效。我所做的工作表明,通常通过使用nvarchar数据类型而不是varchar解决此错误消息。但是,事实并非如此。 以下脚本的第108行。我的假设是sql_variant有点奇怪,但是我不知道那是什么。 USE SSISDB; GO DECLARE @folder_id bigint , @folder_name nvarchar(128) = …


1
如何正确解决合并复制错误冲突
我们有SQL Server 2008 R2合并复制设置。 最近,我开始对某些表产生冲突,当我检查冲突查看器时,我可以看到赢者和输者列的值是相同的! 我确定这些数据只能由一个订户输入。 我曾经sp_showrowreplicainfo获得有关冲突行的更多详细信息,但我得到了2行:一行用于发布者,一行用于订阅者,两行的“版本”均为1。 我还实现了Brandon的方法:审核Merge Replication中的更改,但它仅显示正常的插入! 您能告诉我如何开始解决此类冲突吗?

3
更新具有数百万条记录的表,迄今已有4天
我当前正在更新具有数百万条记录的表,该表已经进行了4天,并且查询仍在执行。 我检查了活动监视器,它显示查询正在运行。 在事件日志中根本没有错误。 性能明智: 磁盘A中的Tempdb(850 GB可用空间) 磁盘B中的数据库文件(750 GB可用空间) 16 GB内存 请建议我该怎么办? 查询 UPDATE dbo.table1 SET costPercentage = ISNULL(t2.PaymentIndex, 1.0), t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00), Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00) FROM dbo.table2 t2 WHERE LEFT(dbo.test1.procodet, 3) = LEFT(t2.ProviderCode, 3) COLLATE database_default

2
MPIO我应该期望什么吞吐量?
带有两个1 Gbps NIC的Dell PowerEdge 2950进入一个交换机上的两个1 Gbps端口,然后转到带有四个1 Gbps NIC且作为一个虚拟接口出现的NetApp。24个驱动器,7200k SATA,NetApp RAID-DP。我已使用Microsoft iSCSI启动器中的MPIO将每个主机NIC映射到NetApp。使用SQLIO进行测试,我的写吞吐量大约在200 MB左右,但是我的读接近100 MB。 难道我的读取不应该像我的写入一样接近200 MB吗?这是配置问题还是我不​​了解的基本存储问题? 更新:这是针对随机工作负载的IOPS。读是有意义的,但是,我不确定写要用20000做什么。SAN缓存为3.2 GB。SQLIO测试针对25 GB的文件。
12 sql-server 


3
基于同一表的UPDATE表
我有一张带有产品说明的表格,每个产品说明都有一个product_id和一个language_id。我想要做的就是更新所有与字段language_id的2等于同product_id在language_id是1。 到目前为止,我已经尝试了以下查询,但是却收到错误消息,指示MySQL不想更新在子查询中也使用该表的表。 UPDATE products_description AS pd SET pd.products_seo = ( SELECT pd2.products_seo FROM products_description AS pd2 WHERE pd2.language_id = 1 AND pd2.products_id = pd.products_id ) WHERE pd.language_id <> 1 在MySQL中是否有解决此限制的“简单”方法?还是任何“技巧”?我的查询无法正常运作,这有点合逻辑,这让我感到有些惊讶。
12 mysql  update 

2
导出所有关系数据的工具?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 5年前关闭。 是否有一种工具可以从表中的选定行中导出数据,而所有数据都存储在通过关系设计链接的其他表中的其他表中? 目的是简化用于临时迁移的服务器之间的数据位迁移。我正在寻找具有定义的外键的MySQL InnoDB工具。

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.