使用 SQL Server 2014,我有这个:
Table1
Tab1_id int identity(1,1) primary key
Tab1_val1 smallint
Tab1_val2 smallint
Tab1_valInfo varchar(10) -- not yet implemented, will be used only for presentation
Run Code Online (Sandbox Code Playgroud)
Tab1_id | Tab1_val1 | Tab1_val2 | Tab1_valInfo
---------|-------------|-------------|--------------
1 | 25 | 19 | 0025-0019
2 | 0 | 5 | 0000-0005
3 | 12 | 3 | 0012-0003
Run Code Online (Sandbox Code Playgroud)
现在,凭借我相当短的 SQL 经验,我正在尝试的是:
在应用程序中,插入数据所需的唯一输入值是Tab1_val1和Tab1_val2,然后创建一个更新列的触发器Tab1_valInfo。
create trigger utr_ValInfo on Table1
after insert as
begin
declare @size int = 4;
declare …Run Code Online (Sandbox Code Playgroud) 我有一个 TVPmyTVP实现为select val.* from vw_MyView val. 前几天,我修改了vw_MyView,将: 替换
select Foo,Bar from DB为
select Foo, Bash, Bar from DB。
这有一个奇怪的副作用:调用select Bar from myTVP()返回一个名为Bar填充了内容的列Bash(尽管事实上Bar和Bash甚至没有相同的类型)。
展示问题的匿名计划:https://www.brentozar.com/pastetheplan/?id=ryJLJmqdl
请注意,Object2和Object1是相同的,但两个计划之间最左侧嵌套循环的输出列表完全不同。
笔记:
这是我们第一次在至关重要的生产数据库上应用 TDE,我有以下问题。
当 TDE 正在进行时:
相关平台是具有可用性组的 SQL Server 2014 SP2 GDR。
sql-server encryption availability-groups transparent-data-encryption sql-server-2014
当我无法使用传统方式连接到SQL Server(原因是删除登录触发器)时,DAC引起了我的注意。我在网上做了一些搜索,结果发现访问服务器的唯一方法是使用 DAC 连接,不幸的是默认情况下该连接是关闭的。但是,我仅使用 sqlcmd 就能够解决这个问题(我删除了触发器)。
我的问题是,如果我可以仅使用 sqlcmd 连接到 SQL Server,那么 DAC 的用途是什么?
我阅读了Brent Ozar 发表的一篇很棒的文章,并提出了一些与内存授予相关的问题。我无法在他文章的评论部分回答我的问题,所以我想从这里得到任何帮助。
他在文章中指出:
而且无论我更新统计信息多少次,我仍然会得到大约400MB 的磁盘溢出。
我在这里有点困惑(
查看估计的行数与实际的行数。它们是相同的。统计数据很好。
我也没有使用小型服务器:我的虚拟机有 32GB 的 RAM,我已将其中的 28GB 分配给 SQL Server。没有其他查询同时运行——这只是一个孤独的查询,溢出到磁盘......
有一个从这里建模的 sql 代理作业,它使用 sp_whoisactive 将结果捕获到表中。99% 它工作正常,但 sql 代理作业时不时会失败并出现以下错误:
Warning: Null value is eliminated by an aggregate or other SET operation. [SQLSTATE 01003] (Message 8153) Violation of PRIMARY KEY constraint 'PK__#ADDF8B9__69B13FDC8C10EA7F'. Cannot insert duplicate key in object 'dbo.@blockers'. The duplicate key value is (623). [SQLSTATE 23000] (Error 2627) The statement has been terminated. [SQLSTATE 01000] (Error 3621) Warning: Null value is eliminated by an aggregate or other SET operation. [SQLSTATE 01003] (Message 8153) Warning: Null value is eliminated by …
我遇到了与自动故障转移相关的异常行为,因此在关闭 SQL Server 服务的情况下自动故障转移不起作用。集群磁盘似乎仍然连接到故障节点,但我无法找出导致此行为的最终问题。如果您能帮助我理解这个问题,我将非常感谢您。
出于测试目的,我在域控制器上创建了 iSCSI 目标,并连接了 2 个启动器:
以下是有关我的集群的详细信息:
以下是有关我的 SQL Server 服务的详细信息:
以下是有关集群磁盘的详细信息(我只添加了其中一个磁盘的详细信息,因为两个磁盘是相同的):
现在,当我关闭 SQL Server 服务时,不会发生服务的自动故障转移:
我测试了自动故障转移成功运行的其他场景:
在上述所有场景中,资源均成功故障转移到另一个节点。
您能否帮我弄清楚当我关闭活动节点上的 SQL Server 服务时自动故障转移出了什么问题?
sql-server clustering failover sql-server-2014 failover-cluster-instance
如何遍历 SQL Server 表中的所有行并编辑列?你知道的:
creatie每次一分钟都必须对该列进行编辑。所以第一个必须是 15:00:00,第二个 15:01:00,第三个 15:02:00 等等。我使用了下面的查询,但最大 ID 是 24697...所以循环很长。
declare @var datetime = '2015-10-19 0:0:0';
declare @counter int = 1;
declare @max int = (select max(id) from topic);
while (@counter <= @max) begin
update Topic set Creatie = Creatie + @var where id = @counter;
set @counter += 1;
set @var += '0-0-0 0:1:0'
end;
Run Code Online (Sandbox Code Playgroud)
因为我每次都这样做@var += '0-0-0 0:1:0',我不知道 24697 次后的结果是什么(如果它有效)。
这是前 25 …
如果我有一个包含 2 列的简单表和一个由两列组成的复合主键,我该如何重命名其中一列,但前提是它不会导致主冲突?
这是一个简化的示例。
拿下表:
User | Role
------|----------------
Joe | User
Joe | Administrator
Brian | User
Anna | Administrator
Anna | Admin
Run Code Online (Sandbox Code Playgroud)
假设我想编写以下查询:
UPDATE UserRoles Set Role = 'Admin' WHERE Role = 'Administrator'
Run Code Online (Sandbox Code Playgroud)
在不使用游标的情况下,如何更改 SQL 更新语句以避免重命名 Anna(因为该用户已经具有 Admin 角色),但仍重命名 Joe?
甚至可以使用基于集合的 SQL 还是使用游标是唯一的方法?
谢谢。
当存储过程在任何时候从管理工作室运行良好时,我正在对这种情况进行故障排除,但即使对于相同的参数,相同的存储过程在其中一个网络服务器中运行得非常糟糕。可能有一些原因导致这种情况,包括阻塞等。
我想排除使用不同 SET 选项创建 2 个不同计划的可能性,并且这些计划中至少有一个使用产生错误计划的参数组合进行了优化。
引用本杰明·内瓦雷斯:
“一般来说,查询优化是一个代价高昂的操作,为了避免这种优化成本,计划缓存会尽量将生成的执行计划保存在内存中,以便它们可以被重用。但是,如果一个新的连接运行相同的存储过程有不同的SET选项,它可能会生成一个新的计划……”
为了解决这个问题,我想要一个 T-SQL 查询,它会显示为会话设置的所有值。
这可能吗?
以下 SET 选项将影响执行计划的重用:
(他们中的一些)
DATEFORMAT
LANGUAGE
NUMERIC_ROUNDABORT
FORCEPLAN
performance sql-server optimization plan-cache sql-server-2014 query-performance
sql-server-2014 ×10
sql-server ×8
update ×3
trigger ×2
clustering ×1
dac ×1
encryption ×1
failover ×1
logins ×1
memory ×1
memory-grant ×1
optimization ×1
performance ×1
plan-cache ×1
sqlcmd ×1
statistics ×1
t-sql ×1
tempdb ×1
transparent-data-encryption ×1
view ×1