数据库管理员

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


2
为什么我不能通过SQL-SERVER 2008链接服务器读取Oracles CLOB列?
我想从SQL-Server 2008访问Oracle 11g数据库中的数据 我设置了链接服务器,执行时 select * from [Link_server_name]..Oracle_schema.Oracle_table 和Oracle_table包含Number和varchar2列,所有工作均例外。 但是,当Oracle_table包含CLOB列时,出现以下错误: OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'的帽子被Meldung'Unspecified error'破坏了。 'OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'已死于Meldung'发生Oracle错误,但无法从Oracle检索错误消息。祖鲁格本。 '从OLE DB-Anbieter'MSDAORA'中删除文件'L_V407SR8T',在Meldung中'不支持数据类型。祖鲁格本。 消息7306,第16级,状态2,第1行 死于“ MCCAPP”。 使用OPENQUERY SELECT * FROM OPENQUERY([L_V407SR8T], 'Select CLOB_COLUMN from Oracle_table' ) 我懂了 'OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'已死于Meldung'发生Oracle错误,但无法从Oracle检索错误消息。祖鲁格本。'从OLE DB-Anbieter'MSDAORA'中删除文件'L_V407SR8T',在Meldung中'不支持数据类型。祖鲁格本。 请原谅德语错误消息。 我的问题:是否可以通过链接的服务器读取CLOB列? 编辑: SQL Server导入和导出向导似乎也依赖OLE DB,并且在同一张表上很烂 我问自己,问题是否取决于字符集使用,但是我无法更改它们 在实际工作中,我使用一些PowerShell脚本来获取数据,但是



10
将数据库缩小到其初始大小以下
我有一个SQL Server 2005开发数据库,​​它是实时的30GB副本。我们删除了一些dev中不需要的数据,这使使用的数据文件空间减少到20GB。因此,我们约有33%的未使用。 我需要回收空间,这将允许我们在服务器上拥有第二个开发数据库(基于缩减版本);但是,我无法回收空间,我做了以下工作: 文件的初始大小SMS2_Data为30GB。 DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY) 其次是 DBCC SHRINKFILE (N'SMS2_Data' , 19500) 不开心 我尝试进行备份,创建一个初始大小较小的新数据库,然后还原,但由于初始大小被覆盖而感到不高兴。也尝试过: ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000) 这是错误的,说: 修改文件失败。指定的大小小于当前大小。 我尝试了20800,然后一直提高到29000(29GB),但仍然不允许我更改它。 完成收缩后,将恢复模式从更改FULL为SIMPLE,然后再次更改。不开心 我认为这与某些TEXT领域有关。我们整个系统中大约有6个。因此,作为测试,我将它们全部删除,然后缩小了文件,但仍然没有变化。 剩下的唯一选择是将数据重新导入到另一个数据库。这是不切实际的,因为必须在实时数据库上进行,因为这样做会带来很大的风险。我们半定期地获取实时数据库的副本并覆盖dev / test。我们有大约500张桌子。我想要一种不会将数据导出到新数据库的风险的方法。 我尝试将数据移动到另一个文件,它复制了除5%之外的所有数据。这就是导致我尝试删除所有文本列的原因。 服务器处于兼容模式90,但为SP2。我现在做了以下3次:重新索引所有表,备份数据库,收缩文件,收缩数据库。仍然没有喜悦。 EXECUTE sp_spaceused 返回: database_name database_size unallocated space SMS2Tests 31453.94 MB …

9
没有负载均衡器的负载均衡MySQL集群
我希望创建一个负载平衡的MySQL群集,但没有实际的负载平衡器,以免增加故障点或复杂性。 我当时想的是: 具有MySQL的主从设置 在每个客户端上,放置一个简单的轮询代理,它将在服务器之间轮换请求。 这可能吗?还是有更好的方法来实现这一目标?
10 mysql 

2
如何防止SELECT上的分区列存储死锁
我在SQL Server 2016中拥有三个群集列存储索引(CCI)表。所有这些CCI都基于租户ID处于同一分区方案中。最近,而且前后矛盾,我在从联接到这些表的简单选择语句中陷入僵局。死锁的示例查询: SELECT TOP 33 r.tenantid FROM Table_r r INNER JOIN Table_cm cm ON r.MyKey=cm.MyKey INNER JOIN Table_pe pe ON r.MyKey=pe.MyKey WHERE r.TenantId = 69 AND pe.TenantId = 69 AND cm.TenantId = 69 错误信息: 事务(进程ID 56)与另一个进程在通用的可等待对象资源上处于死锁状态,并且被选择为死锁牺牲品。重新运行事务。 线索: 如果查询使用CCI以外的其他索引,则不会死锁。 如果删除三个tenantid过滤器中的两个,则不会死锁。 如果我选择前32位或更低,则不会死锁。 如果添加OPTION(MAXDOP 1),则不会死锁。 我可以在混乱的PROD副本,PROD只读次要副本和PROD本身中对此进行复制。 我无法在DEV或INT中复制此行为。 如果我将WITH(NOLOCK)添加到所有3个表联接中,它仍然会死锁 查询自身会死锁。当没有其他活动进程时,它将死锁。 没有并行性的查询计划不会死锁 死锁XML在这里 我们的PROD版本: …

1
稀疏列,CPU时间和过滤索引
稀疏 当像您一样对稀疏列进行一些测试时,我想知道造成性能下降的直接原因。 DDL 我创建了两个相同的表,一个表具有4个稀疏列,而一个表没有稀疏列。 --Non Sparse columns table & NC index CREATE TABLE dbo.nonsparse( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, charval char(20) NULL, varcharval varchar(20) NULL, intval int NULL, bigintval bigint NULL ); CREATE INDEX IX_Nonsparse_intval_varcharval ON dbo.nonsparse(intval,varcharval) INCLUDE(bigintval,charval); -- sparse columns table & NC index CREATE TABLE dbo.sparse( …

1
为什么需要将NULL强制转换为列类型?
我有一个帮助程序,它为我生成一些代码以进行批量更新并生成如下所示的SQL: (活动字段和核心字段均为类型boolean) UPDATE fields as t set "active" = new_values."active","core" = new_values."core" FROM (values (true,NULL,3419), (false,NULL,3420) ) as new_values("active","core","id") WHERE new_values.id = t.id; 但是,它失败了: ERROR: column "core" is of type boolean but expression is of type text 我可以通过添加::booleannull 来使其正常工作,但这似乎很奇怪,为什么将NULL视为类型TEXT? 同样,转换起来有点棘手,因为它需要大量的代码重做才能知道它应该将NULL转换为哪种类型(列和值的列表当前是从一个简单的JSON对象数组自动生成的) 。 为什么这是必需的,并且有一个更优雅的解决方案,不需要生成的代码知道NULL的类型? 如果相关,我正在使用Node.JS上的续集来执行此操作,但在Postgres命令行客户端中也得到了相同的结果。
10 postgresql  null  cast 



2
更好的“喜欢,喜欢,喜欢,喜欢,喜欢”的方法
在这个问题上,他和我有同样的问题。我需要类似的东西: select * from blablabla where product like '%rock%' or like '%paper%' or like '%scisor%' or like '%car%' or like '%pasta%' 这很丑陋,并且没有使用索引。在这种情况下,这实际上是唯一的方法(在字符串中选择多个单词),还是应该使用FULLTEXT? 据我了解,全文可以在字符串中选择多个单词。 这个问题也涉及全文

1
幽灵清理设置
我正在运行一个高事务性的数据库(平均约17.5万笔事务/分钟,每小时将近900万条记录被添加和删除) 直到最近,这还不是什么大问题,因为我们已经添加和删除了约750万条记录,但是随着最新数据的涌入,幽灵清理似乎无法跟上清理工作的步伐。表/索引上未使用的空间。 几天前,我们在16个表(大多数是2个表)中达到了53 GB的“未使用空间”,因此开始研究幽灵清理过程,发现它每5秒运行一次并运行10页。 我当前的解决方案是那天清晨,我正在运行以下命令的三个线程: DECLARE @2hours datetime = dateadd(hour,2,getutcdate()) WHILE getutcdate() < @2hours BEGIN DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS END 赶上前一天晚上的积压工作(大部分删除操作都发生了) 我想知道是否有办法将默认设置从5秒和10页更改为每秒一次或运行超过20页,是否有任何方法可以这样做,还是我应该继续整理多个清理过程来清除数据,或者是否有其他措施可以帮助您 重新编制索引至少每周一次(大多数情况是隔天一次)对受影响最大的索引进行一次 AlwaysOn高可用性群集上的SQL Server 2012 Enterprise SP3_CU8(明天升级到CU9)也具有复制功能(在单独的服务器上分发)

4
如何在SSIS中更改脚本任务版本?
我在VS2015的SSIS项目中添加了脚本任务。当我部署到SQL Server 2016时,我收到一条错误消息,说明该version 15.0脚本不受支持。 这在哪里version 15 come from?在阅读有关Stack Overflow的其他类似问题时,我看到您可以将项目的目标版本设置为SQL Server 2012,这就是我所做的(最终部署目标是SQL Server 2012)。 我也尝试删除并重新创建脚本任务。并且在脚本的信息中,它说它正在使用C#的V10。 我该如何解决? 脚本任务:错误:从XML加载脚本任务时发生异常:System.Exception:脚本任务“” ST_a1ad9dc5972c42b68c12a13155f10b6d“”使用的是此发行版本的Integration Services不支持的15.0版脚本。要运行程序包,请使用脚本任务创建新的VSTA脚本。在大多数情况下,当您在%SQL_PRODUCT_SHORT_NAME%Integration Services中打开SQL Server Integration Services程序包时,脚本会自动转换为使用受支持的版本。在Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(XmlElement elemProj,IDTSInfoEvents事件)“ 我还在SSDT 2012中打开了该项目,并使用了其他名称进行了重建。同样的错误。似乎必须有一个未被删除的引用或其他内容。 此问题的解决方案(/programming/34893267/ssis-script-task-vs15-not-work-when-deploy-on-sql-server-2014)均无效。 查看脚本所在包中的XML,我可以轻松地找到该任务,并且在任何地方都没有引用版本15。 ==========编辑 将项目复制到托管数据库的计算机上,打开VS2015并从那里进行部署后,该包将执行。 然后,当回到我的机器并在那里构建时,事实并非如此。 这是错误吗?或者我是在做些愚蠢的事情,期望构建产生与使用VS中的向导相同的部署向导... 我有SQL Server 2016(13.0.4411.0),ssisdb具有架构版本(13.0.1601.5)。 我使用的是在Visual Studio 2015中创建的集成服务包。脚本组件具有以下路径:C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\VSTA14_IS_ST_CS_Template.vstax不允许我通过集成服务目录执行该包(由于Zach遇到的消息)。但是,它似乎可以让我通过文件系统(使用SQL Agent)执行它。不确定该程序是否正常运行,将在软件包完成后对其进行更新。
10 ssis 

5
自助加入的替代方法
我在这里提出了一个问题:https : //stackoverflow.com/questions/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows 关于从同一表,同一列,不同行划分值的问题。现在,我遇到的问题是,我有更多的分子和分母(具有不同的uns)。仍然是self join解决这一问题在Postgres或有更好的解决方案的好办法? 例: | postcode | value | uns | |----------|-------|-----| | AA | 40 | 53 | | BB | 20 | 53 | | AA | 10 | 54 | | AA | 20 | 55 | | AA | 10 | 56 | | …

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.