我不是 DBA,但我是(主要是!)能干的 SQL 报告编写者。我可以麻烦各位 DBA 提供一些专业知识吗?
我可以毫无问题地将 SQL Developer 连接到 Oracle XE 的数据字典,即查看数据字典的信息作为 SQL Developer 中的 ERD,显示属于 HR 的表以及这些表之间的关系,表示为 PK 和 FK 之间的链接个别表。
但是,当我将数据字典从我工作场所的 11g Oracle DB 导入 SQL Developer 时,它会带回我指向 SQL Developer 的模式的所有表,但没有显示这些表之间的关系 - 即属于架构的表的 PK/FK。
此功能是否必须手动写入 ERD,还是应将表关系信息作为构成数据字典的表的一部分提供?
我间歇性地从 Oracle 收到此错误。触发器正在从分区表中截断分区,同时针对它运行长时间运行的查询。
由于我要截断的分区与我打算查询的分区不同,因此我希望这能正常工作。我怀疑一个流氓查询计划,在我想要的地方(迭代器)或(连接过滤器)执行分区列表(全部)。
查询很复杂,连接了多个分区表。
所以我的问题是:我能否从 Oracle 中获取更多详细信息以准确找出查询中的哪个表(或索引)导致问题?有什么方法可以捕获发生错误时生效的查询计划?(如果我现在看它可能与计划不同)
我将两个应用程序迁移到新服务器。其中一个工作没有任何问题,但另一个遇到了后端 sql 权限问题,例如
对象“aspnet_CheckSchemaVersion”的 EXECUTE 权限被拒绝
我可以找到为什么一个应用程序可以工作而另一个不工作的原因。它们都在同一个应用程序池下运行,但使用不同的数据库。我不必为一个工作做任何事情,对于另一个我必须为每个表授予[网络服务]用户的权限,应用程序访问的存储过程。
好吧,我现在通过为网络服务设置两个数据库安全来解决这个问题。我不知道为什么我必须为一个应用程序执行此操作,而另一个应用程序不需要它。我的问题是
SQL Server Management Studio 中的 SQL Server 安全性是什么?当您单击用户 -> 属性然后转到左侧的第二页时,您基本上可以访问它们。
它是干什么用的? 它的正确用途是什么?
来自微软
证券
Run Code Online (Sandbox Code Playgroud)Lists the securables on which specific permissions have been granted or denied to this principal.

我正在使用 SQL Server 2008 Sp3
最近我在 SQL 日志中遇到错误:
错误:18059,严重性:20,状态:1
。连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。
我通过 Profiler 找到了相关的原始服务器和应用程序。
我搜索并发现有人说我需要更改应用程序连接字符串中的连接池。
以下是相关Web.Config文件:
<?xml version="1.0"?>
<appSettings>
<add key="Main.ConnectionString" value="Data Source=db-002\db2;Initial
Catalog=APPDB;TRUSTED_CONNECTION=YES"/>
<add key="ConnectionHash" value="==QMr1meolHO3YWdTNFOzcTO"/>
<add key="Database" value="[APPDB]"/>
<add key="UseApprole" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我在我们的测试环境中将其更改为以下内容:
<?xml version="1.0"?>
<appSettings>
<add key="Main.ConnectionString" value="Data Source=db-002\db2;Initial
Catalog=APPDB;TRUSTED_CONNECTION=YES;Pooling=false"/>
<add key="ConnectionHash" value="==QMr1meolHO3YWdTNFOzcTO"/>
<add key="Database" value="[APPDB]"/>
<add key="UseApprole" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我已经重置了应用程序、服务和 IIS。检查应用程序,它的工作原理。
有一段时间我没有再收到这些错误,但 3 小时后它们又恢复了。
谁能给我一个想法我能做什么?
我有两张表,一张表存储各种用户的 GPS 数据,另一张表存储基于 GPS 经纬度值和时间戳差异的用户空闲时间。
表T1内容:
id uid latitude longitude received_time imno
435 25 13.041868 80.198868 2014-08-07 15:53:00 352944054874253
436 25 13.041862 80.198868 2014-08-07 15:54:00 352944054874253
437 25 13.041869 80.198868 2014-08-07 15:55:00 352944054874253
438 25 13.041887 80.198871 2014-08-07 15:55:38 352944054874253
439 25 13.041887 80.198871 2014-08-07 15:55:42 352944054874253
440 25 13.041887 80.198871 2014-08-07 15:55:47 352944054874253
441 25 13.041887 80.198871 2014-08-07 15:55:52 352944054874253
442 25 13.041887 80.198871 2014-08-07 15:56:00 352944054874253
Run Code Online (Sandbox Code Playgroud)
我必须比较具有相同纬度和经度值的行。
如果前一行的经纬度与下一行的经纬度相同,则计算时间戳差,直到下一行的经纬度值不相等。
例如,从 ID 438 到 442,纬度和经度值相同,所以我必须计算:
timediff = 442 received - …Run Code Online (Sandbox Code Playgroud) 我有一个填充物化视图的耗时查询。它已经运行了 18 个小时 - 这是意料之外的。
SELECT STATUS
FROM V$SESSION
WHERE SID=194;
Run Code Online (Sandbox Code Playgroud)
上面的查询将会话显示为“ACTIVE”。我想知道这是否足以证明查询仍在运行,以及是否有任何其他方法可以仔细检查会话是否已死。
更新
会话并没有死;但一直在等待:
SQL*Net more data from dblink
Run Code Online (Sandbox Code Playgroud)
我按照 Phil 的建议使用了 sql trace 得出了这个结论。
我们可以配置基于证书的身份验证来连接(登录)sql 客户端吗?或使用相互身份验证(sql server 和 sql client)连接 sql 客户端的任何其他方法?
这是一个有助于我理解的理论问题。在sql server中从完全恢复模式切换到简单恢复模式的过程是什么?
是不是流程如下:
我想我的主要问题是关于第 1 点。如果我不进行 trans log 备份,将 SIMPLE 丢弃最终 trans log 中的任何数据,或者切换到 SIMPLE 备份 trans log(我认为不会)。
此外,我认为最好的做法是在切换到 SIMPLE 后执行完整备份,以便可以在检查点将新事务从 trans 日志推送到数据文件。
我昨天修改了一个维护计划,今天早上(通过使用来自 sysjobs 的最后修改日期)发现与维护计划相关的所有作业都被禁用。
我无法弄清楚为什么会这样。SQL 作业所有者是sa,我只是用维护计划更改了维护清理任务并保存了作业。
我正在使用 PostgreSQL 11。我想有条件地将值插入表中,同时插入的结果包括null未导致插入的输入的每一行。
例如
CREATE TABLE all_sums (sum INTEGER);
SELECT
CASE WHEN a_sum IS NULL THEN null
ELSE (SELECT sum FROM (INSERT INTO sums (sum) VALUES (sum) RETURNING sum))
END
FROM
(SELECT a + b FROM (VALUES (1, null), (null, 2), (2, 3)) AS row (a, b))
AS a_sum;
Run Code Online (Sandbox Code Playgroud)
应该导致表格all_sums看起来像:
all_sums: sum
------
5
(1 row)
Run Code Online (Sandbox Code Playgroud)
但查询的输出应该是:
null
null
5
------
(3 rows)
Run Code Online (Sandbox Code Playgroud)
此示例因语法错误而失败:
ERROR: syntax error at or near "INTO"
Run Code Online (Sandbox Code Playgroud)
有什么方法可以实现所需的查询输出?
(对于上下文:我这样做的原因是因为还有进一步的查询依赖于知道插入是否发生在特定行上。
这是通过将我的查询从每行一个转换为每列一个来更有效地从文件中插入一些数据的努力的一部分。不过,我不是在寻找其他提高插入速度的技巧,如果不可能,我很高兴在这一点上结束。)
sql-server ×4
oracle ×3
security ×2
backup ×1
case ×1
errors ×1
insert ×1
mysql ×1
oracle-11g ×1
partitioning ×1
postgresql ×1
recovery ×1
session ×1
ssl ×1
ssms ×1
subquery ×1
terminology ×1