我正在尝试使以下 SQL 语句起作用,但出现语法错误:
SELECT A.*, COUNT(B.foo)
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.PKey = B.FKey
GROUP BY A.*
Run Code Online (Sandbox Code Playgroud)
这里,A 是一个有 40 列的宽表,如果可能,我想避免在 GROUP BY 子句中列出每个列名。我有很多这样的表,我必须在这些表上运行类似的查询,所以我必须编写一个存储过程。解决这个问题的最佳方法是什么?
我正在使用 MS SQL Server 2008。
使用带有拉取订阅者的 SQL 2008 R2 事务复制,当我们添加一篇文章时,我想避免创建整个快照(数据库约为 80 GB,因此这需要几个小时)。
从这篇文章 中,我已经看到了如何通过关闭即时同步来使用部分快照来做到这一点,但这对我们不起作用。
理想情况下,我只想将它作为我们的 db 脚本的一部分运行来创建表,所以如果我们想要复制它,我们会这样做:
Create Table ...
sp_addArticle ...
sp_PushThisToOurSubscribersNow
Run Code Online (Sandbox Code Playgroud) 假设我们有以下情况:
我们有一张桌子(比方说Table_A),它有一个触发器INSERT。触发器作业是table_B根据 中插入的值更新 中的某些行table_A。
现在,当我们简单地在表中插入一行时一切正常,但是我们通过事务插入数据的情况呢?触发器会等到所有事务语句成功运行,还是会在识别到插入时触发?。如果触发器在识别出第一个插入时立即触发,如果事务在最后一行失败会发生什么?这种情况有什么机制吗?
甚至 Microsoft也不鼓励使用 SQL Server 身份验证模式,但我们的应用程序需要它。
我读过最好的做法是不要让用户sa直接使用登录名,而是使用 Windows 身份验证并允许这些帐户(或帐户组)系统管理员权限。
这是你应该拥有的相当普遍的知识
SET NOCOUNT ON
Run Code Online (Sandbox Code Playgroud)
默认在创建新存储过程时。
Microsoft 已在 2012 年更改了默认模板以包含此内容。我认为这对于触发器应该是相同的,但它并未包含在模板中。
这是故意的还是只是疏忽?
是否可以运行 SQL 命令来确定数据库的恢复模式?我想知道它是否完全恢复。
我正在处理 sql 脚本,如果不满足某些条件,我需要停止继续该脚本。
当我谷歌它时,我发现 20 严重级别的 RaisError 将终止它。但由于某些原因,我不能使用该选项。
请向我提供停止 SQL 脚本执行的可能替代方法。
在我妻子的工作中,关于仅使用存储过程中临时表中的varchar(255)所有varchar字段存在争议。基本上,一个阵营希望使用 255,因为即使定义发生变化它也始终有效,而另一个阵营则希望坚持使用源表中的大小以提高潜在的性能。
表演营对吗?是否有其他影响?他们正在使用 SQL Server。
我是埃因霍温 Fontys 大学的学生,我目前正在进行一系列采访以帮助开发 SQL Server 工具,我想从该领域的专家那里得到反馈。
我的问题之一是:
最佳实践 SQL Server 维护计划是什么样的?您为此使用 SQL Server 维护计划,还是使用自定义脚本?
升级 SQL Server 的硬件后,我们在 Windows 任务管理器中注意到 SQL 实例仅使用了可用线程的一半:
.
服务器具有以下硬件和软件:
运行select cpu_count from sys.dm_os_sys_info返回 40。
操作系统可以看到所有 80 个线程。
为什么只使用了服务器一半的处理能力?
我们在两台服务器上拥有相同的硬件和软件,并且它们都表现出相同的行为。
sql-server ×10
t-sql ×2
trigger ×2
datatypes ×1
group-by ×1
hardware ×1
maintenance ×1
performance ×1
replication ×1
security ×1
transaction ×1