我能够读取信息架构中的 CONSTRAINTS,但是如何获取与该 CONSTRAINTS 关联的所有参数,以使用 SQL 获取完整的 CONSTRAINTS 定义?例如,
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
Run Code Online (Sandbox Code Playgroud)
这将为我提供约束列表,但是可以说,我有一个约束外键“user_role_id”,其完整定义(通过 pgAdmin)是
ALTER TABLE app.user
ADD CONSTRAINT user_role_id FOREIGN KEY (role_id)
REFERENCES app.role (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)
那么,如何通过编写 SQL 来获得此定义,该 SQL 为我提供与该约束相关的所有选项呢?
我正在尝试填充服务包是否需要更新的列(版本状态)。我创建了一个查找表,其中列出了 SQL 版本和最新产品版本,例如 SQLVersion LatestSP SQL Server 2016 13.0.5026.0
然后,我有第二个表,其中包含产品版本,并希望将此值与 LatestSP 值进行比较,如果第一个表中的值小于第二个表中的值,则 SP 不是最新的。我需要指定两个表中的产品版本以 X 开头(即 SQL 2014 以 12 开头,SQL 2016 以 13 开头),然后比较数字(这样我只比较正确的版本),如果值Servers 中的值小于 SPLookup 中的值,然后使用“NEEDS UPDATING”填充 versionstatus 列。但是,我在将 sql_variant 转换为 varchar 以便能够选择前 2 位数字时遇到问题。
这是我到目前为止所拥有的,并将其推断到其他版本。Servers 表中的productversion 是sql_variant,SPLookup 中的LatestSP 是varchar。
INSERT INTO Servers
(versionstatus)
SELECT CASE WHEN LEFT(X.productversion, 2) = '12' AND LEFT(Y.LatestSP, 2) = '12' AND X.productversion < Y.LatestSP THEN 'UPDATE NEEDED'
WHEN LEFT(X.productversion, 2) = '12' AND LEFT(Y.LatestSP, 2) = '12' AND X.productversion >= Y.LatestSP THEN …Run Code Online (Sandbox Code Playgroud) 如何监控我的 SQL Server 正在运行的 SQL 语句,是否可以仅使用 SQL Server 而没有第三方工具?
作为替代方案,有人可以推荐任何可以通过 ODBC 连接监视运行语句的免费工具吗?
我正在使用 SQL Server 2008 Express。我没有 SQL Server 代理选项。我怎样才能启用它?
我在互联网上搜索过,但找不到任何东西。我需要安装什么吗?
我们有一个带有 15 个数据库的 SQL Server。这被每个数据库中的许多用户同时使用。最近,我们开始从该服务器收到高 CPU 警报。当警报出现时,我可以跟踪到确切的用户和查询。
我们无法在此服务器上打开 SQL Server Profiler。我想知道我们是否可以使用任何脚本获取有关在任何数据库(导致高 CPU)中运行的历史昂贵查询的信息。例如 - 我需要过去 4 小时内最昂贵的查询以及数据库名称和用户名。
我遇到了 SQL Server 日志文件的问题,该文件无法在已发布的 HDD 上保持稳定的空间量。驱动器大约为 50GB,并且日志文件越来越频繁地占用它。
数据库设置为完整恢复模式,每小时进行一次差异备份。我知道这应该允许日志文件截断并使用已经分配给它的空间?
当使用DBCC LOGINFO它检查日志文件的状态时,它返回文件中大多数 VLF 的状态设置为“2”,这表明它们处于活动状态?我们在日志文件中有 537 个 VLF。我不知道为什么所有这些都会使用 15GB 的空间同时处于活动状态?
我已经检查了复制DBCC OPENTRAN,它报告说文件上没有主动打开的事务。
有没有一种我可能会忽略的维护这个文件的方法?
有什么地方可以去确定日志文件在做什么?
复制会干扰截断/缩小日志文件吗?
目前,它每天增长约 1.67GB。在我不得不执行一些缩小文件的紧急工作之前,我有大约 18 天的时间。如果可能的话,我希望它保持在 25GB 以下,以便在突然需要空间时有足够的增长空间。
我网站上的用户必须能够选择他们知道的语言(英语、德语等),所以我有一个languages包含 150 种语言(id、名称)和表users(id 和许多其他字段)的表。
网站的访问者必须能够通过他们的语言知识来搜索用户。例如,他们可能正在寻找擅长英语、德语和法语的人。
我无法解决这个问题。如果我创建一个language_knowledge包含字段 id、language_id 和 user_id 的表,那么我将能够找到知道一种特定语言(比如英语)的用户,但我需要找到知道的用户,例如,英语和德语。
我该怎么做呢?
下面的两个查询中,哪个对 postgresql 来说最有效?并且在可读性等方面具有更好的风格。
区别在于语句的位置doctor.type != 'surgeon'
在 WHERE 子句中:
SELECT practice.name, doctor.name
FROM doctor
JOIN practice ON (doctor_code = code)
WHERE doctor.name LIKE '%son'
AND (doctor.type != 'surgeon');
Run Code Online (Sandbox Code Playgroud)
或者在 JOIN 子句中:
SELECT practice.name, doctor.name
FROM doctor
JOIN practice ON (doctor_code = code AND doctor.type != 'surgeon')
WHERE doctor.name LIKE '%son';
Run Code Online (Sandbox Code Playgroud) 我想在 SQL Server 代理作业中创建一个全局临时表。
这是代码:
CREATE TABLE ##TestEmployee(Id int, EmployeeName nvarchar(50))
Run Code Online (Sandbox Code Playgroud)
当我在 SSMS 中执行时,一切都很好。
然后我将上面的代码放在 SQL 代理作业上。作业将成功完成,但是当我尝试在 SSMS 中执行 select 语句时,出现Invalid Object错误。
SELECT * FROM ##TestEmployee
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 代理中创建全局临时表是否有我遗漏的任何问题?
我有一年的库存数据,我想提取每个月数据的第一天和最后一天。做这个的最好方式是什么?
sql-server ×5
postgresql ×2
constraint ×1
foreign-key ×1
join ×1
monitoring ×1
mysql ×1
profiler ×1
sql-standard ×1