小编Col*_*art的帖子

SQL Developer 数据建模器和数据字典问题

我不是 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-developer

5
推荐指数
1
解决办法
1047
查看次数

Oracle ORA-08103 故障排除 - 对象不再存在

我间歇性地从 Oracle 收到此错误。触发器正在从分区表中截断分区,同时针对它运行长时间运行的查询。

由于我要截断的分区与我打算查询的分区不同,因此我希望这能正常工作。我怀疑一个流氓查询计划,在我想要的地方(迭代器)或(连接过滤器)执行分区列表(全部)。

查询很复杂,连接了多个分区表。

所以我的问题是:我能否从 Oracle 中获取更多详细信息以准确找出查询中的哪个表(或索引)导致问题?有什么方法可以捕获发生错误时生效的查询计划?(如果我现在看它可能与计划不同)

oracle oracle-11g partitioning

5
推荐指数
1
解决办法
1万
查看次数

什么是 SQL Server 安全对象?

我将两个应用程序迁移到新服务器。其中一个工作没有任何问题,但另一个遇到了后端 sql 权限问题,例如

对象“aspnet_CheckSchemaVersion”的 EXECUTE 权限被拒绝

我可以找到为什么一个应用程序可以工作而另一个不工作的原因。它们都在同一个应用程序池下运行,但使用不同的数据库。我不必为一个工作做任何事情,对于另一个我必须为每个表授予[网络服务]用户的权限,应用程序访问的存储过程。

好吧,我现在通过为网络服务设置两个数据库安全来解决这个问题。我不知道为什么我必须为一个应用程序执行此操作,而另一个应用程序不需要它。我的问题是

SQL Server Management Studio 中的 SQL Server 安全性是什么?当您单击用户 -> 属性然后转到左侧的第二页时,您基本上可以访问它们。

它是干什么用的? 它的正确用途是什么?

来自微软

证券

Lists the securables on which specific permissions have been granted or denied to  this principal.
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

security sql-server terminology ssms sql-server-2008-r2

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

接收错误 Error: 18059, Severity: 20, State: 1 in the SQL Logs

我正在使用 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 小时后它们又恢复了。

谁能给我一个想法我能做什么?

sql-server-2008 errors

5
推荐指数
1
解决办法
4722
查看次数

如何比较表中的所有行并使用触发器提取数据

我有两张表,一张表存储各种用户的 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)

mysql

5
推荐指数
1
解决办法
372
查看次数

oracle 中的活动会话会死吗?

我有一个填充物化视图的耗时查询。它已经运行了 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 得出了这个结论。

oracle session

5
推荐指数
1
解决办法
328
查看次数

我们可以配置基于证书的身份验证来连接(登录)sql 客户端吗?

我们可以配置基于证书的身份验证来连接(登录)sql 客户端吗?或使用相互身份验证(sql server 和 sql client)连接 sql 客户端的任何其他方法?

security sql-server ssl

5
推荐指数
1
解决办法
5865
查看次数

从完全恢复切换到简单恢复

这是一个有助于我理解的理论问题。在sql server中从完全恢复模式切换到简单恢复模式的过程是什么?

是不是流程如下:

  1. 在切换到 simple 之前进行 trans log 备份,以便我可以在切换之前进行时间点恢复。
  2. 切换到简单。
  3. 可能使用 TRUNCATE ONLY 运行 DBCC SHRINKFILE 以释放一些磁盘空间。
  4. 可能更改数据库以减少 trans 日志文件的大小。
  5. 执行完整备份。

我想我的主要问题是关于第 1 点。如果我不进行 trans log 备份,将 SIMPLE 丢弃最终 trans log 中的任何数据,或者切换到 SIMPLE 备份 trans log(我认为不会)。

此外,我认为最好的做法是在切换到 SIMPLE 后执行完整备份,以便可以在检查点将新事务从 trans 日志推送到数据文件。

sql-server backup recovery

5
推荐指数
1
解决办法
6370
查看次数

修改维护计划后自动禁用 SQL 代理作业

我昨天修改了一个维护计划,今天早上(通过使用来自 sysjobs 的最后修改日期)发现与维护计划相关的所有作业都被禁用。

我无法弄清楚为什么会这样。SQL 作业所有者是sa,我只是用维护计划更改了维护清理任务并保存了作业。

sql-server sql-server-agent maintenance-plans

5
推荐指数
1
解决办法
2025
查看次数

作为 INSERT INTO ... RETURNING 的结果包括未插入的行

我正在使用 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)

有什么方法可以实现所需的查询输出?


(对于上下文:我这样做的原因是因为还有进一步的查询依赖于知道插入是否发生在特定行上。

这是通过将我的查询从每行一个转换为每列一个来更有效地从文件中插入一些数据的努力的一部分。不过,我不是在寻找其他提高插入速度的技巧,如果不可能,我很高兴在这一点上结束。)

postgresql insert subquery case postgresql-11

5
推荐指数
1
解决办法
356
查看次数