对于我们支持的一个应用程序,我们有一个周二/周四的维护窗口。星期二我们修改一个设施,星期四如果没有错误,我们会将所有更改推广到其他设施。该应用程序是 3ed 方,有时会更改数据库,从而使应用程序的“报告”服务器上的视图无效。
有没有一种方法可以在我的报表服务器(大约有 70 个)上使用 TSQL 滚动浏览所有视图,以在星期二解聚后查找绑定错误?
我想找到的错误是:
以用户身份执行:<>。无法准备报表。[SQLSTATE 42000](错误 8180)由于绑定错误,无法使用视图或函数“PAT.dbo.Reorders”。[SQLSTATE 42000](错误 4413)使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询在其目标列表中必须具有相同数量的表达式。[SQLSTATE 42000](错误 205)。步骤失败。
有没有办法以编程方式执行此操作,或者我是否只需要右键单击每个视图并尝试查看它是否带有数据?
谢谢,
我对SET DATEFORMAT命令有一些疑问。
1)该命令是否只用于插入和更新日期格式,不影响该列的日期格式?或者这也会在插入值后影响我的表吗?
2)我尝试使用以下命令(用于日期数据类型)并得到类似This session's YDM date format is not supported when converting from this character string format to date, time, datetime2 or datetimeoffset. Change the session's date format or provide a style to the explicit conversion.
. 为什么日期数据类型会出现错误(对于 smalldatetime 它的工作原理如链接所示)?
CREATE TABLE #tempTable (DateFormatSample DATE)
SET DATEFORMAT MDY
INSERT INTO #tempTable
VALUES ('09/28/2007')
SET DATEFORMAT YDM
INSERT INTO #tempTable
VALUES ('2007/28/09')
SET DATEFORMAT YMD
INSERT INTO #tempTable
VALUES ('2007/08/28')
SELECT DateFormatSample
FROM #tempTable
DROP TABLE #tempTable …Run Code Online (Sandbox Code Playgroud) 我有一些每天和每周的任务,我在其中运行脚本来获取所需的信息。运行此代码一次并访问所有服务器而无需分别登录每个服务器的方法是什么?
我最近了解了sp_tableoption,它使您能够为特定表存储“行外大值类型”。
我的一个同事告诉我,如果我启用它,每个字段至少存储在 8 KB 页面上,无论它有多大。我无法找到对此的确认,因此我运行了以下测试:
DROP TABLE Size
CREATE TABLE Size
(
[ID] TINYINT
,[Text] NVARCHAR(MAX)
)
EXEC sp_tableoption 'Size' ,'large value types out of row' ,0
TRUNCATE TABLE Size
INSERT INTO Size
SELECT 1, N'in row text'
UNION ALL
SELECT 2, N'' -- add here very large string
SELECT [ID], DATALENGTH([Text]) Size, LEN([Text]) [Len]
FROM [dbo].[Size]
EXEC sp_spaceused Size;
DROP TABLE Size
CREATE TABLE Size
(
[ID] TINYINT
,[Text] NVARCHAR(MAX)
)
EXEC sp_tableoption 'Size' ,'large value types …Run Code Online (Sandbox Code Playgroud) 我有一个要求,我必须插入很多行。对于插入,我们像这样使用
insert into emp(name,age) values('abc',12);
Run Code Online (Sandbox Code Playgroud)
这将只插入一行。对于插入多行,我们可以多次编写插入查询或编写具有多个值的单个查询。例如
条件 1
insert into emp(name,age) values('abc1',121);
insert into emp(name,age) values('abc2',122);
insert into emp(name,age) values('abc3',12);
Run Code Online (Sandbox Code Playgroud)
条件2
insert into emp(name,age) values('abc',12),('abc2',122),('abc3',12);
Run Code Online (Sandbox Code Playgroud)
我的问题是上面的(条件 1 和条件 2)都需要时间吗?我猜条件 2 比条件 2 花费的时间少。如果我的猜测是真的,那么原因是什么?
我在 MS SQL Server 2008R2 中有以下基本数据集:
create table #temptable
(
Source varchar(255),
PollTime datetime,
Value numeric(20,2)
)
insert into #temptable( Source, PollTime, Value) values('ABC', cast('2015-01-03 11:41:08.000' as datetime), 66)
insert into #temptable( Source, PollTime, Value) values('ABC', cast('2015-01-03 11:46:08.000' as datetime), 70)
insert into #temptable( Source, PollTime, Value) values('ABC', cast('2015-01-03 11:55:08.000' as datetime), 66)
insert into #temptable( Source, PollTime, Value) values('ABC', cast('2015-01-03 12:00:08.000' as datetime), 70)
insert into #temptable( Source, PollTime, Value) values('ABC', cast('2015-01-03 12:05:08.000' as datetime), 80)--1
insert into #temptable( …Run Code Online (Sandbox Code Playgroud) 我有一个存储发票的表,我正在尝试从中获取统计信息,不幸的是,该表构建不佳,一些关键信息都混杂在 nvarchar 字段中,例如发票是否已取消或是否已取消免除费用位于此字段中的一个非常复杂的字符串中,该字符串由前端解析。3453.234;exempt;Invoice Total...
所以我想创建一个排除几个词的查询。我的问题是如何完成一个查询,该查询可以根据关键字列表(已取消、免除)排除记录,因此如果该字段中有任何单词,则不会考虑金额。
我希望有人能用这个引导我朝着正确的方向前进。我有一张表,上面有学生成绩。
Create Table StudentGrades
(
StudentID references Student(StudentID) int not null,
GradeIssued varchar(1) not null,
WhenIssued datetime not null default(getdate())
)
Run Code Online (Sandbox Code Playgroud)
我想编写一个查询,执行以下操作:查找成绩(按顺序)为 D,然后是 C,然后是另一个 C,然后是 A 的学生。我知道方向(因为成绩的日期发布)模式应该在,但我想不出如何在不使用游标的情况下编写它。
根据我的查询经验,我通过 WHERE 和 HAVING 子句进行过滤,但是当我想找到特定模式时,我不确定该去哪里。
我有两个表,它们都使用子查询。这两个表通过使用UNION ALL. 我还有另外两个只使用一个WHERE子句的表,并且这两个表都使用UNION ALL. 我正在努力加入所有 4 个表,因为我在使用UNION ALL和时一直低于错误UNION。
消息 205,级别 16,状态 1,第 1 行所有使用 UNION、INTERSECT 或 EXCEPT 运算符组合的查询在其目标列表中必须具有相同数量的表达式。
假设我在 SQL Server 2014 中有这两个查询,它们都从不相关的表中返回一行:
SELECT SUM(A) A, SUM(B) B FROM X
SELECT SUM(C) C, SUM(D) D FROM Y
Run Code Online (Sandbox Code Playgroud)
我想将这些查询组合成一个包含A, B, C, D.
在单个查询中执行此操作的好方法是什么,而不是像在标量变量中选择结果这样的多查询解决方案?