我使用过 T-SQL(CTE、窗口函数、递归 CTE、大数据、表值函数、APPLY、PIVOT、存储过程等),但从未查询过 Microsoft SSAS 多维数据集。
对于以下 T-SQL 概念,MDX 中是否有类似的概念?
使用 MDX 的 T-SQL 用户是否有任何陷阱?
我希望 T-SQL 和 MDX 之间有一些共同的类比,这将有助于擅长 T-SQL 的人过渡到 MDX。
如果有一个关于从 T-SQL 进入 MDX 时所犯的常见错误的指南,那就太好了。
尝试获取正在执行的作业的会话 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 上自动检查错误日志。此代码调用xp_readerrorlog 0来检查错误日志,并调用 xp_readerrorlog 0,1来检查 SQL Server 日志。
然而,有时我需要扫描不止一个错误日志。
我希望能够通过 T-SQL 查看日志的日期,或者除此之外,找到存在的日志数量。
我读到我们最多可以有 99 个存档日志,但是当尝试显示不存在的错误日志时,服务器会抛出以下错误消息。
“xp_readerrorlog() 返回错误 2,'系统找不到指定的文件。”
我知道日期信息和数字存在,因为 SSMS 显示它(见下图。)
是否可以每小时将 SQL 事务日志恢复到 MS SQL 数据库,而不必先恢复完整备份?
您可以将数据库设置为无恢复,应用事务日志,然后设置为恢复。每小时都这样做吗?那可能吗?
问题的原因是供应商每天早上发送完整的数据库备份,而不是发送大型备份,而是全天发送 T-Log。
在Linux上,SQL Server在哪里存储“SQL Server密码策略”和SA用户的密码?我明白了,“密码”不安全。
错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它太短。密码必须至少为 8 个字符..
进而,
错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它不够复杂。密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、基数 10 的数字和符号。
我猜该策略实际上已编译到数据库中?密码会存储在一个不起眼的位置吗?
我想以这样的方式返回数据,即如果代码具有连续的活动日期和结束日期,则数据应给出最小活动日期和最大结束日期,但如果代码已停止,则应显示两个日期
例如桌子
+----+------+---------------+------------+
|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) 我正在尝试运行一个递归更改表,从我的 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) 撇开笑话不谈,什么是“混淆密钥”?我只是要离开文档。
sys.sysclsobjs存在于每个数据库中。每个分类实体包含一行,这些实体共享相同的公共属性,包括以下内容:...
混淆密钥。
这似乎涉及
Content/binn/sqllang.dllContent/binn/sqlmin.dll我想知道密钥的作用和被混淆的内容,以及是否可供用户使用。
对于安全审计,我需要识别所有超级用户并记录执行的每个活动。最好的方法是什么?
“超级用户”是指 sysadmin、serveradmin、securityadmin、processadmin 和 dbcreator。
有没有人有一个 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 ×10
t-sql ×5
attach ×1
encryption ×1
error-log ×1
learning ×1
linux ×1
mdx ×1
permissions ×1
restore ×1
ssas ×1