我们有一个实例会随机尖峰 CPU。我想创建一个在 CPU 上触发超过 90% 的警报,并自动调用一个正在运行的作业sp_AskBrent
并将输出通过电子邮件发送给我。但是,文本或 HTML 输出中的输出不可读。它甚至不适合 Excel 电子表格。如何以可读格式获取信息?
以纤程模式(轻量级池)运行 SQL Server会禁用 SQL CLR:
轻量级池不支持公共语言运行时 (CLR) 执行。禁用以下两个选项之一:“启用 clr”或“轻量级池化”。依赖 CLR 且在光纤模式下无法正常工作的功能包括层次结构数据类型、复制和基于策略的管理。
在另一方面,禁用SQL CLR单独(无实现了轻型池)并没有禁用内置的CLR类型,如geometry
,和geography
(虽然hierarchyid
上面提到的),如图哪有“HIERARCHYID”类型的工作时,“CLR”被禁用?
现在一些新的语言特性依赖于CLR,例如该FORMAT
功能:
FORMAT 依赖于 .NET Framework 公共语言运行时 (CLR) 的存在。
在光纤模式下运行 SQL Server 是否禁用该FORMAT
功能和/或使用 CLR 类型?
这现已发布到 Connect:SQL Server 2012 中的 FORMAT() 函数拒绝了不变区域性标识符。(Connect 已停用。)
现已发布到feedback.azure.com。
我正在尝试让format()
SQL Server 2012 中的内置函数使用不变区域性。
文档中说该函数接受 .NET 区域性标识符作为第三个参数。不变区域性的标识符是一个空字符串:
您可以通过
""
在调用CultureInfo
实例化方法时使用空字符串 ( )按名称指定不变区域性。
但是,这不适用于 SQL Server:
Run Code Online (Sandbox Code Playgroud)select format(getdate(), N'g', '');
消息 9818,级别 16,状态 1,第 1 行
函数调用中提供的区域性参数 '' 不受支持。
还记录了不变文化与英语相关联,但与任何国家/地区无关。有人会认为这允许'en'
作为标识符传递,但是,在 .NET 中,CultureInfo.InvariantCulture.Equals(CultureInfo.GetCultureInfo(""))
yields true
,但CultureInfo.InvariantCulture.Equals(CultureInfo.GetCultureInfo("en"))
Gives false
,所以它们实际上并不相同。
那么如何让 SQL Server 使用不变文化呢?
(注意:我有兴趣使内置的东西工作。我已经有了自己的 CLR 函数来做到这一点,我打算删除它们以支持现在的内置功能)。
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
2012 年 …
长话短说,我们这里有一个数据库,用于管理一些员工数据,例如电子邮件、名字、姓氏等。我们公司购买了这个基于 SAP 的费用报告系统:| 这需要以非常奇怪的格式导出基于员工的数据。在不涉及太多细节的情况下,此数据的导出总共需要 137 列,其中许多列具有空值。
简单 我整理了一个查询,该查询基本上从我们的数据库中提取了这些信息,并设置了一些需要的常量。这个查询在这个问题中是什么并不相关,它只是一个SELECT
提取一些数据的语句。
然后,我需要每天使用特定的文件名和管道分隔格式将其导出,效果如下:
--employee export
DECLARE @FileName varchar(500)
SET @FileName = (SELECT '\\someFileServer\Public\someFolder\employee_p06010603ace_305_202105_' + REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '') + '.txt')
DECLARE @sql varchar(8000)
DECLARE @header varchar(8000)
SET @sql= 'bcp "exec [MyDBServer].[MyDbName].dbo.ConcurEmployeeExport" queryout ' + @FileName + ' -c -T -t "|"'
Exec master..xp_cmdshell @sql
Run Code Online (Sandbox Code Playgroud)
完美,我得到这样的行:
305|Jon| |Doe|10217487|10217487@t|
305|Steve| |Smith|10217522|10217522@t|
Run Code Online (Sandbox Code Playgroud)
大约有 130 多列,不想显示所有这些,因为它无关紧要。我以为我已经完成了,直到实现协调员说 yes 看起来不错,但第一行需要从这个奇怪的行开始并带有一些值。
这意味着我拥有的结果查询应该有一个额外的行,其中包含一些值......简单我以为我会联合他们想要的......所以我做到了。
除了UNION ALL
我必须输入一些额外的空值来匹配我的查询中的列数。问题是当我运行导出时,我最终得到了一堆用管道分隔的空列,我最终得到了这个:
100|0|SSO|UPDATE|EN|N|N| | | | | | …
Run Code Online (Sandbox Code Playgroud) 对于移动应用程序,我们正在考虑根据用户的手机号码验证用户。
在应用程序中,我们将限制用户输入,以便将其存储为以下格式:
在这种情况下,这意味着瑞典的电话号码 (+46),删除最初的 0,然后保留剩余的 9 位数字(此处的手机号码是 10 位数字,包括前导 0)。
但是,当前保存在数据库中的数据包括很多行,并且没有对输入进行验证。这意味着保存的数字可以是多种不同的格式,包括
0700112233
070-0112233
460700112233
等等。
所以数据库中列的类型可能是varchar。
目前,我无法将数据库中已保存的数字实际更新为一种通用格式,例如使用libphonenumber。我也希望限制对数据库的实际查询次数。
该数据库目前包括以不同格式保存的大约 10 多个国家的电话号码。使用的 DBMS 是 MySQL。
在不查询任何可能格式的数据库的情况下,准确匹配数字的有效方法是什么?
在我的数据库中,日期保留为自 1970 年 1 月 1 日起/之前经过的天数,我认为这是一种 Unix 日期格式,例如。今天是 2018 年 5 月 23 日,值为 17674。
我正在尝试select
针对日期表中的列运行语句以仅显示年份。
如果我运行这个:
datepart(year, c.cko_date)
Run Code Online (Sandbox Code Playgroud)
我得到的日期是 1940 年代(应该是最近几年)。
当我跑
select datepart(year, getdate())
Run Code Online (Sandbox Code Playgroud)
它正确地告诉我日期是 2018 年。
关于我做错了什么的任何建议?
我正在尝试使用 pg_dump 对模式进行备份,例如,
$ pg_dump -U ganapathy -n hotel_management > ganapathy_schema.dump
Run Code Online (Sandbox Code Playgroud)
它创建了备份,但我无法使用pg_restore
. 它给出这样的错误,
pg_restore: [archiver] 输入文件似乎不是有效的存档
然后我尝试使用 . sql
扩展像,
$ pg_dump -U ganapathy -n hotel_management > ganapathy_schema.sql
Run Code Online (Sandbox Code Playgroud)
但它也给出了同样的错误。
pg_restore: [archiver] 输入文件似乎不是有效的存档
之后,我尝试通过-Fc
在.dump
和.sql
扩展中指定格式来进行备份。然后我尝试恢复它。它成功恢复。
所以现在我的怀疑是,
PostgreSQL 中 pg_dump 中 .dump 和 .sql 的扩展名有什么区别?
因为两者都需要指定格式。
提前致谢...
我有一个查询,如果日期列有一组日期中的任何一个,我想在其中排除行。
我很难弄清楚如何在不过滤一个月的情况下返回正确的结果集。
我最初的尝试假设运算符 '!=' 能够指定多个变量,但我可能会误会。
如何以删除所有我不想要的指定日期的方式过滤结果?
SELECT * INTO IPS_TransactionDataAll2
FROM
[IPS_TransactionDataAll1]
where Format([Start Date], 'MM/yyyy') != ('07/2016''08/2016''09/2016''10/2016''11/2016''10/2016''01/2017''02/2017''03/2017''04/2017''05/2017''06/2017''07/2017')
Run Code Online (Sandbox Code Playgroud)
伪代码:
从 TableA 中选择到 TableB 其中日期不在 7-11/2016 和 1-7/2017 月份
我正在开发一项服务,允许用户存储来自银行的数据,但银行以不同的格式向我提供他们的账户报表,其中之一如下
68520157286 0106201809510981PAY TRAN SPEI -000000000088640000001321436306018973NON1 CLA24 REF 0000000
我想知道是否有人知道这种格式的名称以及如何处理它以将其存储在SQL Server 中,我在 txt 文件中收到这种格式,该文件可以包含一千多条记录。,让我对格式印象深刻的是两件事:
首先,乍一看我们可能会认为信息是由空格分隔的,如图所示。
其次,数量之间有很多零,这让我很难知道它们是要处理的数量的一部分还是字符分隔格式的一部分。
所以,我的问题是知道格式的名称,以及是否方便处理来自 SQL 的所有信息来存储它,或者是否应该在尝试将其放入数据库之前通过先前的分离过程。非常感谢大家的时间。
format ×9
sql-server ×6
bcp ×1
date ×1
date-format ×1
mysql ×1
pg-dump ×1
pg-restore ×1
postgresql ×1
sp-askbrent ×1
sql-clr ×1
t-sql ×1