我有以下带有示例值的表结构:
Number Reference Length Quantity
----------- ------------------------- --------------------------------------- ----------
16002983 ASH 14 383.000000 4
16002983 ASH 14 1669.000000 4
16002983 GLAS-NP 403.000000 1
16003002 SZR 16 1402.000000 1
16003002 Energy Surcharge F 56556.680000 1
16003256 SZR 14 726.000000 1
16003256 Energy Surcharge F 40706.820000 1
16003256 7283-ASB 726.000000 1
16003308 ASH 14 740.000000 4
Run Code Online (Sandbox Code Playgroud)
截至目前,该表有 742 个条目,并且每天都在扩展。
我需要找到一个Reference在所有Numbers之间共享的,如果有的话。
如何?我甚至不知道我是否需要JOINS, GROUP BY,别的东西吗?我似乎在逻辑上失败了。
任何帮助表示赞赏。
我正在使用这个 sql 来获取我的错误日志位置:
EXEC xp_readerrorlog 0, 1, N'Logging SQL Server messages in file'
Run Code Online (Sandbox Code Playgroud)
但是,有时我有非常大的日志文件(大约 1gb,我无法控制这些文件的循环)上面的查询需要大约 10 秒才能在这些大文件上运行,这太长了。
鉴于这段文本总是在文件的前几行,如果我能说“给我前 1 行然后停止阅读”就好了,但我认为 xp_readerrorlog 不支持这一点?
或者,如果我知道文件中第一行的日期,我可以指定一个日期范围,如下所示:
DECLARE @startDate DATETIME
DECLARE @endDate DATETIME
SET @startDate = '2016-01-28 12:00:00'
SET @endDate = DATEADD(mi, 5, @startDate)
EXEC xp_readerrorlog 0, 1, N'Logging SQL Server messages in file', NULL, @startDate, @endDate
Run Code Online (Sandbox Code Playgroud)
哪个要快得多。但是,我不知道如何计算出这个日期——在许多情况下,它与实例进程的开始时间几乎相同(SELECT login_time FROM sysprocesses WHERE spid = 1但这不能保证)
我还尝试使用master..xp_instance_regread从 读取日志文件位置SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Parameters,但这似乎并不总是准确的。
有没有人对我如何以有效的方式计算日志文件位置有任何建议,即使我的日志文件很大。
我的老板正在请求一个大于 1024 列的视图,其中他在查询视图时只会选择他想要的几列,以便实际返回的列小于 1024。为什么我可以查询大于 1024 的列,但是我无法将这个完全相同的查询保存为视图?
我正在使用 SQL Server 2012 企业版
我有 3 个具有完全相同 DDL 的表(我知道这是一个可怕的设置),但每个表都有不同的字段值。我希望能够为所有 3 个选择编写一个查询,而不是必须使用 3 个不同的选择查询。这是示例 DDL 和单个查询,可以将其合并为 1 个查询吗?
Create Table InfoForJane
(
genid int IDENTITY(1,1) PRIMARY KEY
,name varchar(500)
,numofdays varchar(100)
)
Create Table InfoForJoe
(
genid int IDENTITY(1,1) PRIMARY KEY
,name varchar(500)
,numofdays varchar(100)
)
Create Table InfoForJessie
(
genid int IDENTITY(1,1) PRIMARY KEY
,name varchar(500)
,numofdays varchar(100)
)
Run Code Online (Sandbox Code Playgroud)
以下是我希望合并为一个的查询
Select
genid
,name
,case
when numofdays NOT IN ('1-3','4-6','7-9') then '1-3'
else numofdays
end As [NumofDays]
from rashapa.munich.dbo.InfoForJane
Select
genid
,name
,case
when numofdays …Run Code Online (Sandbox Code Playgroud) 我为我的 SQL Server 设置了 AlwaysOn 可用性组。现在我想配置SSIS。我该怎么做?下面的链接提供了一些信息,但由于我不是 DBA,因此很难理解这篇文章:
AlwaysOn 可用性组和 SQL Server 作业,第 23 部分:维护计划备份和 SSIS 包
有人可以指导我在可用性组中进行 SSIS 的基本设置并解释节点之间如何同步吗?
更新
我指的是 SSIS 目录数据库 (SSISDB)
我可以在我的连接管理器中使用监听器吗?
When the database foo is not yet created and I I run this
IF db_id(N'foo') IS NOT NULL
BEGIN
ALTER DATABASE [foo] SET OFFLINE
GO
DROP DATABASE [foo]
GO
END
Run Code Online (Sandbox Code Playgroud)
I get a message
Cannot drop the database 'foo' becuase it does not exist or you do not have permission.
Why?
I have confirmed that the sql statement select db_id(N'foo') returns NULL.
我正在尝试将销售日期 >= 的所有数据提取到某个日期时间。当我执行查询时,出现以下错误:
消息 241,级别 16,状态 1,第 15 行
从字符串转换日期和/或时间时转换失败。
我应该改变什么才能让他的查询运行?下面是示例 DDL
Declare @datetime datetime = GetDate(), @sql varchar(max)
Create Table #dinonuggets
(
saledate datetime
,item varchar(500)
)
Insert Into #dinonuggets Values
('2016-03-30 12:02:00.000','chair')
,('2016-03-04 08:12:48.000','stove')
,('2016-03-07 09:37:39.000','washer')
Set @sql = 'Select * FROM #dinonuggets WHERE saledate >= '+@datetime+' '
Print @sql
Exec (@sql)
Run Code Online (Sandbox Code Playgroud)
我的预期输出将是
03/30/2016 12:02:00.000 椅子,
因为这是唯一符合标准的数据
在 SQL Server 2012 实例上,如何使用 SQL 查询获取 SQL Server 实例的名称?
我想显示当前安装在 SQL Server 中的实例名称。
设计表 A 中的每个条目都连接(1:n)到表 B 或表 C 中的条目的关系的正常方法是什么?
或者特别是:有一个用于角色、电影、剧集和电视节目季的表格。一个角色与 1) 电影或 2) 节目有关(除了 n:n 与季节(季节常规)和剧集之外)
x 可以是电影和节目的 ID。
两个相同的表(tv_characters 和 movie_characters)?
使用两个主键会更好吗(一个总是“电影”或“电视”)?
我有一个使用 ODBC 访问 SQL Server 2012 数据库的应用程序,SQLSetStmtAttr用于将SQL_SOPT_SS_CURSOR_OPTIONS选项设置为SQL_CO_FFO. 这意味着它从数据库中读取的内容由快速只进游标支持。
这在大多数情况下是可以的,但是有时快速只进游标的性能明显低于“通常”静态游标(我们将使用 default 获得的游标SQL_CO_OFF)。
问题:有没有办法强制 SQL Server 不使用快进游标?
显然,正确的方法是更改应用程序,并且该过程正在进行中,但这需要时间,同时我正在寻找临时解决方法。
到目前为止,我唯一的想法是使用它:(来自Fast Forward-only Cursors)
Fast Forward-only 游标的隐式转换
在以下情况下,仅快进游标会隐式转换为其他游标类型:
- 如果 SELECT 语句将一个或多个表与触发器表(INSERTED/DELETED)连接起来,则游标将转换为静态游标
但是,即使是临时解决方法,这似乎也有点难看。可能有更好的方法吗?
旁注:在这种情况下,仅快速向前游标表现不佳的主要原因是它们不支持并行性。
对于非快进sys.dm_exec_cursors给我:
API | 快照 | 只读 | 全球 (0)
而快进选项是:
API | 快进| 只读 | 全球 (0)
快照选项比快进选项快 5 倍。如果我查看它们的查询计划,除了DegreeOfParallelism之外,它们没有太大不同。快照是 16 而快进是 0。问题是我们正在从视图中读取(我们没有太多控制权),而这些视图在其设计中是次优的。