标签: sql-server

T-SQL 和 MDX 之间最相关的相似之处是什么?

我使用过 T-SQL(CTE、窗口函数、递归 CTE、大数据、表值函数、APPLY、PIVOT、存储过程等),但从未查询过 Microsoft SSAS 多维数据集。

对于以下 T-SQL 概念,MDX 中是否有类似的概念?

  • 枢
  • 转轴
  • 窗口函数
  • 递归公用表表达式

使用 MDX 的 T-SQL 用户是否有任何陷阱?

我希望 T-SQL 和 MDX 之间有一些共同的类比,这将有助于擅长 T-SQL 的人过渡到 MDX。

如果有一个关于从 T-SQL 进入 MDX 时所犯的常见错误的指南,那就太好了。

sql-server learning ssas t-sql mdx

2
推荐指数
1
解决办法
208
查看次数

如何查找正在运行的作业的会话ID

尝试获取正在执行的作业的会话 ID

;with JobDetails as
(
select Job_Id = left(intr1,charindex(':',intr1)-1),
       Step = substring(intr1,charindex(':',intr1)+1,charindex(')',intr1)-charindex(':',intr1)-1),
       SessionId = spid
    from master.dbo.sysprocesses x 
    cross apply (select replace(x.program_name,'SQLAgent - TSQL JobStep (Job ','')) cs (intr1)
    where spid > 50 and x.program_name like 'SQLAgent - TSQL JobStep (Job %'
)
select * 
    from msdb.dbo.sysjobs j 
    inner join JobDetails jd on j.job_id = jd.Job_Id
Run Code Online (Sandbox Code Playgroud)

但它会引发以下错误

消息 8169,级别 16,状态 2,第 47 行 从字符串转换为 uniqueidentifier 时转换失败。

我尝试将其转换job_id为varbinary但没有产生任何结果

;with JobDetails as
(
select Job_Id = left(intr1,charindex(':',intr1)-1), …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

2
推荐指数
1
解决办法
9658
查看次数

找出错误日志的日期和/或数量 xp_readerrorlog

我有一些代码可以帮助每天在我们的 SQL Server 上自动检查错误日志。此代码调用xp_readerrorlog 0来检查错误日志,并调用 xp_readerrorlog 0,1来检查 SQL Server 日志。

然而,有时我需要扫描不止一个错误日志。

我希望能够通过 T-SQL 查看日志的日期,或者除此之外,找到存在的日志数量。

我读到我们最多可以有 99 个存档日志,但是当尝试显示不存在的错误日志时,服务器会抛出以下错误消息。

“xp_readerrorlog() 返回错误 2,'系统找不到指定的文件。”

我知道日期信息和数字存在,因为 SSMS 显示它(见下图。)

在此处输入图片说明

sql-server t-sql error-log

2
推荐指数
1
解决办法
1617
查看次数

事务日志每小时还原一次

是否可以每小时将 SQL 事务日志恢复到 MS SQL 数据库,而不必先恢复完整备份?

您可以将数据库设置为无恢复,应用事务日志,然后设置为恢复。每小时都这样做吗?那可能吗?

问题的原因是供应商每天早上发送完整的数据库备份,而不是发送大型备份,而是全天发送 T-Log。

sql-server restore transaction-log

2
推荐指数
1
解决办法
291
查看次数

SQL Server 在哪里存储 SA 密码和 SQL Server 密码策略?

在Linux上,SQL Server在哪里存储“SQL Server密码策略”和SA用户的密码?我明白了,“密码”不安全。

错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它太短。密码必须至少为 8 个字符..

进而,

错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它不够复杂。密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、基数 10 的数字和符号。

我猜该策略实际上已编译到数据库中?密码会存储在一个不起眼的位置吗?

sql-server linux database-internals sql-server-2017

2
推荐指数
1
解决办法
8680
查看次数

按不间断日期对行进行分组

我想以这样的方式返回数据,即如果代码具有连续的活动日期和结束日期,则数据应给出最小活动日期和最大结束日期,但如果代码已停止,则应显示两个日期

例如桌子

+----+------+---------------+------------+
|Code| Decri|   Active Date |End Date    | 
+----+------+---------------+------------+
|1000| ABC  | 1/1/2011      | 30/6/2011  |
|1000| ABC  | 1/7/2011      | 30/6/2012  |
|1000| ABC  | 1/7/2012      | 30/6/2013  |
|1001| ABC  | 1/7/2013      | 30/6/2014  |
|1001| ABC  |12/20/2015     |12/20/2017  |
|1003| ABC  | 1/1/2011      |30/6/2011   |
|1003| ABC  | 1/7/2012      |30/6/2013   |
|1003| ABC  | 1/7/2014      |30/6/2015   |
|1003| ABC  | 1/7/2015      |12/20/2017  |
+----+------+---------------+------------+
Run Code Online (Sandbox Code Playgroud)

欲望输出

+----+------+---------------+------------+
|Code| Decri|   Active Date |End Date    | 
+----+------+---------------+------------+
|1000| …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2012 gaps-and-islands

2
推荐指数
1
解决办法
2995
查看次数

读取连接命令时出错

我正在尝试运行一个递归更改表,从我的 sys 表中读取几个参数。

DECLARE @AlterCmd NVARCHAR(MAX)

SELECT top 1
        @AlterCmd = 'ALTER TABLE [dbo].[table] ALTER COLUMN ' + COLUMN_NAME + ' NVARCHAR(' + CHARACTER_MAXIMUM_LENGTH + ')'
    FROM 
        information_schema.columns 
    WHERE 
        table_name = 'table_name' and DATA_TYPE like '%char%'

print @AlterCmd
Run Code Online (Sandbox Code Playgroud)

在此示例代码中,我只想验证命令是否正确,但由于连接中的错误而无法运行它。根据我收到的错误消息:

Msg 245, Level 16, State 1, Line 63
Conversion failed when converting the varchar value ')' to data type int.
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

2
推荐指数
1
解决办法
292
查看次数

什么是 SQL Server 中的“混淆密钥”?

撇开笑话不谈,什么是“混淆密钥”?我只是要离开文档。

sys.sysclsobjs存在于每个数据库中。每个分类实体包含一行,这些实体共享相同的公共属性,包括以下内容:

...

混淆密钥。

这似乎涉及

  • Content/binn/sqllang.dll
  • Content/binn/sqlmin.dll

我想知道密钥的作用和被混淆的内容,以及是否可供用户使用。

sql-server encryption database-internals

2
推荐指数
1
解决办法
513
查看次数

如何识别 SQL Server 中的所有超级用户?

对于安全审计,我需要识别所有超级用户并记录执行的每个活动。最好的方法是什么?

“超级用户”是指 sysadmin、serveradmin、securityadmin、processadmin 和 dbcreator。

sql-server permissions sql-server-2012

2
推荐指数
1
解决办法
5433
查看次数

为所有现有用户数据库生成 CREATE DATABASE FOR ATTACH

有没有人有一个 TSQL 脚本可以使用CREATE DATABASE FOR ATTACH语法自动生成附加所有现有用户数据库所需的代码?

例子:

CREATE DATABASE [mydatabase] ON 
(FILENAME=N'E:\MSSQL\Data\mydatabase.mdf'),
(FILENAME=N'D:\MSSQL.1\MSSQL\Data\mydatabase_log.ldf'),
(FILENAME=N'E:\MSSQL\Data\mydatabase_ndf.ndf')
 FOR ATTACH
Run Code Online (Sandbox Code Playgroud)

我发现了许多使用 sp_attach_db 的示例,但没有一个使用 CREATE DATABASE FOR ATTACH 语法。

谢谢,

克雷格

sql-server attach

2
推荐指数
1
解决办法
3725
查看次数