我有一个查询,用于获取过去 3 个月的 ID 数据。我需要调整它,以便我在三个月中的每一个月都获得最高值。我已经用聚合函数 MAX 尝试了几件事,但我一无所获。
我试图获得过去几个月中每个月的最大值......
以下是查询中的数据,目前按日期 (asc) 排序:
ID 日期值 12410 01/03/2017 12:17 0.000178 12410 01/10/2017 11:36 0.000186 12410 01/17/2017 11:27 0.000189 12410 01/24/2017 13:09 0.000182 12410 01/31/2017 10:37 0.000169 12410 02/07/2017 11:03 0.000214 12410 02/14/2017 11:52 0.000176 12410 02/21/2017 10:51 0.000200 12410 02/28/2017 12:29 0.000194 12410 03/07/2017 08:39 0.000206
这是查询:
从 AnalysisValueTbl 中选择 AnalysisID 作为“ID”,AnalysisDateTime 作为“Date”,AnalysisValue 作为“Value” 在哪里 AnalysisID = 12410 和 DatePart(m, AnalysisDateTime) = DatePart(m, DateAdd(m, -3, getdate())) 和 DatePart(yyyy, AnalysisDateTime) = DatePart(yyyy, DateAdd(m,-3, getdate())) …
我正在尝试添加schemabinding到 SQL Server 2008 中的视图,但出现错误
模式绑定对象中不允许使用语法“Openrowset/Openquery/Opendatasource”。
我使用Openquery是因为我正在查询链接服务器,这是我必须查询的方式。有解决方法吗?
这是我用我的观点尝试的语法
Create View dbo.Test
With Schemabinding
As
Select * FROM OPENQUERY(191.183.18.101, 'Select * from ls1prod.hrinfo')
Go
Run Code Online (Sandbox Code Playgroud) 我有一个 Sql 脚本文件,它执行一系列操作。我在脚本中有事务,所以如果发生什么事,整个脚本都会回滚。
我的问题是说脚本成功执行并且在测试应用程序时发现了某些错误。
现在我想在说 x 天后恢复脚本中发生的所有操作。这是一个事务性数据库,我不必担心任何新的数据添加,因为这只是一个暂存环境。我关心的是恢复 SQL 脚本本身所做的所有结构或数据修改。有人可以告诉我有哪些选择。
我是否需要在回滚脚本中为原始脚本所做的操作编写完全相反的语句。
示例:
主脚本 -Insert Into Customers values(1,'Test','USA') 回滚脚本 - 从 id = 1 的客户中删除 .. 等其他事务(我已经简化了这一点,我在SQL 脚本文件)
谢谢
谢谢
我知道在 SQL Server express 版本中做镜像之类的事情是不可能的,但是我们可以做实时数据库备份和恢复,并设置一些像镜像一样的自动化任务并使它们保持同步。
这个说法有什么问题?为什么它会给出以下错误消息
错误信息:
SELECT 失败,因为以下 SET 选项的设置不正确:“QUOTED_IDENTIFIER”。验证 SET 选项是否正确用于计算列上的索引视图和/或索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。
陈述
SELECT ISNULL(STUFF((SELECT ', ' + u.TITLE + ' ' + u.FirstNAME + ' ' + LastNAME [text()]
FROM table1 c
INNER JOIN table2 u ON c.user = u.user
AND c.Task = @task
AND c.Type = 'Assign'
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ')
,'') UNAMESLIST
Run Code Online (Sandbox Code Playgroud) 我在 SQL 2008 服务器(服务器 A)上有一份工作(我知道这并不理想……正在解决这个问题)。代理在 NT AUTHORITY\NETWORK SERVICE 下运行。
我想添加一个运行位于另一台 SQL 2014 服务器(服务器 B)上的作业的步骤。
我会用:
EXEC [Server B].msdb..sp_start_job N'JobName'
Run Code Online (Sandbox Code Playgroud)
从服务器 A 手动运行它按预期在服务器 B 上执行作业。
如果我将任务添加到服务器 A 上的作业,它会失败并显示以下消息:
以用户身份执行:NT AUTHORITY\NETWORK SERVICE。对象“sp_start_job”、数据库“msdb”、架构“dbo”上的 EXECUTE 权限被拒绝。[SQLSTATE 42000](错误 229)。步骤失败。
我已将服务器 B 上的 NT AUTHORITY\NETWORK SERVICE 分配给 msdb 中的“TargetServerRole”,然后授予有关用户 SP_Start_Job 和 SP_Stop_Job 的执行权限。
服务器 A 将服务器 B 作为链接服务器,我尝试设置“本地服务器登录到远程服务器登录映射”本地登录 NT AUTHORITY\NETWORK SERVICE 来模拟。
作业仍然失败并出现相同的错误。
我需要做什么?
谢谢
sql-server-2008 sql-server permissions sql-server-agent jobs
我发现数据库兼容性级别之间的一段代码的行为存在差异,并想知道其原因是什么。下面是一个简单的示例,它迭代计数表并ROWCOUNT在第 50 次迭代时更改选项:
设置:
/* Create tally table */
SELECT TOP 100
ROW_NUMBER() OVER (ORDER BY a.object_id) AS Number
INTO #Tally
FROM sys.objects a
CROSS JOIN sys.objects b;
/* Create Some databases with different compatibility levels */
CREATE DATABASE [100Compat] WITH COMPATIBILITY_LEVEL = 100
CREATE DATABASE [110Compat] WITH COMPATIBILITY_LEVEL = 110
CREATE DATABASE [120Compat] WITH COMPATIBILITY_LEVEL = 120
CREATE DATABASE [130Compat] WITH COMPATIBILITY_LEVEL = 130
Run Code Online (Sandbox Code Playgroud)
受影响的代码:
/* cursor through the tally table */
DECLARE MyCursor CURSOR
FOR
SELECT …Run Code Online (Sandbox Code Playgroud) 试图弄清楚如何在有效的 SQL (MS SQL Server) 中编写以下伪代码:
SELECT
T1.Item,
T1.Set,
Has.SN
FROM T1
WHERE EXISTS
(SELECT SN FROM T2 WHERE Condition = 'X') AS Has
Run Code Online (Sandbox Code Playgroud)
本质上,如果 T2 上存在 SN,则返回 SN 以及来自 T1 的不相关值。如果SN不存在,则不应返回任何数据(或者可以全部返回NULL)
但 Item 和 Set 必须与 T1 上的同一行相关,并且我还需要返回 SN。(我不确定如果使用单独的 CASE 语句是否能保证这一点。)
没有任何与 JOIN T1 和 T2 相关的内容。
(请注意,这只是作为查询的一个子组件,我需要它以一种可以在其他联接中使用的方式返回这 3 列。)
我认为有一个非常简单的解决方案,但我却一片空白。
我做了一些搜索,但没有找到任何与此类似的示例。
更新
所以样本数据如下:
T1
+----+---------+-----+
| ID | ItemID | Set |
+----+---------+-----+
| 1 | 2424424 | 4 |
+----+---------+-----+
| 2 | 2454677 | 7 | …Run Code Online (Sandbox Code Playgroud) 由于事务日志文件的大小(它增长到 200 GB),我不得不删除它,因为磁盘空间不足。我知道这不是一个好的做法,但无论如何之后表现非常糟糕。
有谁知道在这种情况下是否可以提高性能以及如何提高性能?
我的组织使用 Active Directory 来控制对我们数据库的访问。构建 Web 应用程序并作为我们 CI 过程的一部分,我想在连接字符串中指定凭据。
是否可以在连接字符串中传递 AD 凭据,或者我是否需要这些项目的标准 SQL 帐户?
sql-server-2005 sql-server-2008 authentication authorization
sql-server-2008 ×10
sql-server ×6
aggregate ×1
cursors ×1
jobs ×1
max ×1
mirroring ×1
performance ×1
permissions ×1
schema ×1
t-sql ×1