GO
SQL Server的语句引起了我极大的好奇,我真的不知道如何正确使用它。
我注意到有或没有的查询GO
都不会返回错误并且似乎工作相同,那么它的目的是什么,我为什么要使用它?
分号;
和GO
查询末尾有什么区别?
我发现了一个僵局,似乎表明了我认为不可能的事情。死锁涉及两个进程:
1. process8cf948 SPID 63
对临时表 #PB_Cost_Excp_Process_Invoices_Work 执行 ALTER TABLE。
拥有表 #PB_Cost_Excp_Process_Invoices_Work 的 IX 锁,对象 ID 为 455743580
2. process4cb3708 SPID 72
在临时表 #PB_Cost_Excp_Process_Invoices_Work 上执行更新,它应该是它自己唯一的表副本。
在#PB_Cost_Excp_Process_Invoices_Work 上拥有 Sch-M 锁,对象 ID 为 455743580!
这应该是不可能的。我错过了什么吗?#Temporary 表真的在这两个 SPID 之间重用了吗?
这是在 SQL Server 2008 R2 Service Pack 2 和累积更新 1(版本 10.50.4260)上。
完整的未更改死锁跟踪如下。请注意这两个进程如何在具有相同表名的相同对象 ID 上运行 #PB_Cost_Excp_Process_Invoices_Work_SNIP_0000000D8519:
12/14/2012 13:46:03,spid23s,Unknown,waiter id=process8cf948 mode=X requestType=wait
12/14/2012 13:46:03,spid23s,Unknown,waiter-list
12/14/2012 13:46:03,spid23s,Unknown,owner id=process4cb3708 mode=Sch-M
12/14/2012 13:46:03,spid23s,Unknown,owner-list
12/14/2012 13:46:03,spid23s,Unknown,objectlock lockPartition=0 objid=455743580 subresource=FULL dbid=2 objectname=tempdb.dbo.#PB_Cost_Excp_Process_Invoices_Work_________________________________________________________________________________0000000D8519 id=lock371705d00 mode=Sch-M associatedObjectId=455743580
12/14/2012 13:46:03,spid23s,Unknown,waiter id=process4cb3708 mode=Sch-M …
Run Code Online (Sandbox Code Playgroud) 基于选择,我可以像这样返回 x 行:
1 2019-07-23 10:14:04.000
1 2019-07-23 10:14:11.000
2 2019-07-23 10:45:32.000
1 2019-07-23 10:45:33.000
Run Code Online (Sandbox Code Playgroud)
我们所有的毫秒都是 0。
有没有办法将 1 x 1 毫秒加起来,所以选择看起来像这样:
1 2019-07-23 10:14:04.001
1 2019-07-23 10:14:11.002
2 2019-07-23 10:45:32.003
1 2019-07-23 10:45:33.004
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个游标甚至一个没有成功的更新。
这是获得我想要的结果的查询:
select top 10 ModifiedOn
from [SCHEMA].[dbo].[TABLE]
where FIELD between '2019-07-23 00:00' and '2019-07-23 23:59'
Run Code Online (Sandbox Code Playgroud)
有 81k 个值。该字段是DATETIME
。
根据我的分析,我们数据仓库的完整维度模型需要从 200 多个源表中提取。其中一些表将作为增量加载的一部分提取,而其他表将作为完整加载。
需要注意的是,我们有大约 225 个具有相同架构的源数据库。
据我所知,在 SSIS 中构建一个带有 OLE DB 源和 OLE DB 目标的简单数据流需要在设计时确定列和数据类型。这意味着我最终会得到 200 多个数据流,仅用于提取。
从可维护性的角度来看,这对我来说是一个大问题。如果我需要对提取代码进行某种彻底的更改,我将不得不修改 200 个不同的数据流。
另一种选择是,我编写了一个小脚本,用于读取我想从一组元数据表中提取的源数据库、表名和列。代码在多个循环中运行,并使用动态 SQL 通过链接服务器和 OPENQUERY 从源表中提取。
根据我的测试,这仍然不如使用带有 OLEDB 源和目标的 SSIS 数据流快。所以我想知道我有什么样的选择。到目前为止的想法包括:
解决这个问题的最佳方法是什么?当谈到 .NET 编程时,我是一个初学者,所以仅仅学习基础知识所需的时间也是一个问题。
我遇到了类似的查询
INSERT INTO mytable (id, Created, Updated) VALUES (null, NOW(), NOW())
Run Code Online (Sandbox Code Playgroud)
有列定义
| Created | datetime |
| Updated | datetime |
Run Code Online (Sandbox Code Playgroud)
在这种情况下,MySQL 是否会将 NOW() 值设置为当前时间并向两个调用返回相同的值,或者该查询是否会运行(不太可能)风险,即 Created 和 Updated 的时间略有不同?
注意:我无法更改字段类型。
我们遇到了一个应用程序的数据库服务器之一的问题,可能是由于某些代码在 Mysql 管理其内存的方式中造成了问题。
直到 4 月的第二周,我们的 db 服务器稳定消耗了大约 5 gigs 的内存(最多 7 gigs)。但随后,它开始无限增加,甚至超过了理论上的最大可能分配。
这是我们的年度 munin 图表,显示了过去 2 个月的增长情况:
(来源:postimg.org)
这是在 mysql 中重新启动后的最后 7 天的另一个视图:
(来源:postimg.org)
这是由 mysqltuner.pl 创建的报告:
- - - - 性能指标 - - - - - - - - - - - - - - - - - - - - --------- [--] 最多:4d 1h 56m 28s(152M q [431.585 qps],383K conn,TX:593B,RX:29B) [--] 读取/写入:90% / 10% [--] 总缓冲区:5.3G 全局 + 每线程 10.2M(200 个最大线程) [OK] 最大可能内存使用量:7.3G(已安装 …
我们使用文件流中的Microsoft SQL Server 2008(SP2) - 10.0.4000.0(X64)和Windows Server 2008存储数百万文件。由于有数百万个文件,所有这些文件都被分为 100 个文件组,并一个接一个地按顺序插入。现在我们在每个文件组中有大约 15K 个文件,并且预计很快会增长到 20K。所以我们想知道文件组是否有最大行数限制才能提供最佳性能,或者当我们在单个文件夹中存储或准备存储大约 <20K 个文件时,操作系统端是否有任何最大行数限制以实现最佳性能?
对正确资源的任何建议也将非常有帮助。
我有一个指向 msdn 博客的链接,其中指出
4.检查 FILESTREAM 目录容器的文件数是否不超过 300,000 个,因为 NTFS 性能下降可能是一个问题,尤其是在启用生成 8.3 文件名时。
谢谢。
pgAdmin 4有一个主密码
需要保护并稍后解锁已保存的服务器密码。这仅适用于桌面模式用户。
我知道我当前的主密码,但是,我想更改它而不重置它,因为
重置主密码还将删除所有已保存的密码并关闭所有现有已建立的连接。
这可能吗?
我制作了一个脚本,它从交换机端口获取 mac 地址并将它们放入数据库中。我将它插入到导入表中,稍后将复制到实际表中。一切都很好。现在我正在编写查询以查找哪些 mac 地址是新的。所以,我需要导入表中不在目标表中的行。左外连接是有意义的:
select *
from SwitchportMac_import i
left outer join SwitchportMac sm
on sm.switch = i.switch and sm.port = i.port and sm.mac = i.mac
Run Code Online (Sandbox Code Playgroud)
这也返回i
匹配 in 的行sm
。当然,我可以添加一个,where sm.id is null
但我大吃一惊。
所以要么:
如果是第一个,我会转储 DDL 并弄清楚,但我害怕这是第二个。是否存在外部关键字只是为了让我感到困惑?
我有一台配备 M1 芯片的 MacBook,因此(大约)我运行 SQL Server 的唯一选择是将其作为 Docker 容器运行。这对于标准 SQL 来说效果很好,但是我们的应用程序使用了一些 CLR 功能,例如COMPRESS
;当我尝试使用它时,它告诉我
消息 50000,级别 16,状态 1,第 45 行 此实例上未启用公共语言运行时 (CLR)。
启用它不起作用:
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)
给出
消息 15392,级别 16,状态 1,过程 sp_configure,第 166
行 此版本的 SQL Server 不支持指定的选项“clrenabled”,并且无法使用 sp_configure 进行更改。
我发现了这篇 Stack Overflow 帖子,但那是关于某人使用自定义 .NET 库的;我正在寻找适用于 Windows 的 SQL Server 中可用的“标准”功能。