小编a_h*_*ame的帖子

在登录触发器中获取 SQL 查询

我需要登录触发器。我需要从 Excel Pivot 文件中捕获进入 SQL Server 的 SQL 查询。

目前我正在使用以下代码:

CREATE TRIGGER [MyLogonTrigger] ON ALL SERVER FOR LOGON
AS 
BEGIN
    IF PROGRAM_NAME() <> 'Microsoft%'

    DECLARE @sqltext VARBINARY(128)
    SELECT @sqltext = sql_handle
    FROM sys.sysprocesses
    WHERE spid = @@spid

    DECLARE @SQLQuery varchar(MAX)
    set @SQLQuery = (select TEXT
    FROM sys.dm_exec_sql_text(@sqltext))

    INSERT INTO TestDatabase.dbo.LogonAudit 
             (
                    ... audit columns ...
             ) 
       Select
                    SUSER_SNAME()
                    ,GETDATE()
                    ,@@SPID
                    ,PROGRAM_NAME()
                    ,ORIGINAL_DB_NAME()
                    ,HOST_NAME()
                    ,client_net_address
                    ,@SQLQuery
   FROM sys.dm_exec_connections 
   WHERE session_id = @@SPID
END;
Run Code Online (Sandbox Code Playgroud)

我面临的问题是@SQLQuery每次都是创建触发器定义代码,而不是刷新数据透视表时从 Excel 文件传递​​给 SQL 的实际查询。

我认为这与登录和实际选择查询执行发生在两个不同的事务(SPID)上有关。 …

sql-server t-sql

4
推荐指数
3
解决办法
2043
查看次数

可以更改默认对象名称吗?

迟早,数据库开发人员会遇到并可能使用许多对象的命名方案,如外键、默认约束等。

让我们考虑这个例子:将所有外键命名为:
FK__[name of source table]__[name of source col]__ref__[name of master table]__[name of master column]

例如,当使用create table提及 fk 但未明确提供约束名称的语句时,可以使用什么样的参数化/外部程序来实现具有这样的默认名称?

sql-server

4
推荐指数
2
解决办法
146
查看次数

PostgreSQL 8.3 - 自动清理问题

我在 StackOverflow 上发布了这个,有人建议这个查询更适合这里。

我试图鼓励在某些 PostgreSQL 8.3 数据库中使用和监控 autovacuum。

我经常遇到的一个反对意见是人们不“信任” autovacuum 或者 8.3 中的 autovacuum 中存在错误,这意味着它优先于调度清理而被忽略。大多数情况下,我们的表都很小,这种方法似乎有效。但是,对于我们更大的(以及大量更新的表),这确实不起作用(死元组计数增加,超过 max_fsm_pages,并且表没有被清理等)。

我只是想知道是否有人对 8.3 中的 autovacuum 有问题或不工作有参考。我自己的经验表明 autovac 工作正常,并且在必要时向 pg_autovacuum 表添加条目可以解决问题。

我想了解 autovacuum 的问题(如果存在)。

postgresql postgresql-8.3

3
推荐指数
2
解决办法
1039
查看次数

如何在 postgresql 命令行上导出表

谁能告诉我怎么做?

(我知道这可能是一个愚蠢的问题,但我正在尝试学习如何使用 postgresql 的命令行)

~$ psql mybase
psql (9.1.3)
Type "help" for help.
Run Code Online (Sandbox Code Playgroud)

进而

mybase=# \dt



            List of relations
 Schema |        Name         | Type  |  Owner   
--------+---------------------+-------+----------
 public | xxxxxx              | table | postgres
 public | xxxxxxx             | table | postgres
 public | xxxxxxxxxxx         | table | postgres
 public | xxxxxxxx            | table | postgres
 public | xxxxxxxxx           | table | postgres
 public | xxxxxxxxx           | table | postgres
 public | xxxxxxxxxxxxxxxx    | table | postgres
 public | xxxxxxxxxxxx        | …
Run Code Online (Sandbox Code Playgroud)

postgresql

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

一张表多行或多表几行

我脑子里有一个问题。最好创建一个表并在那里存储很多行,或者创建各种表并在其中存储几行?在物理级别上节省的性能和 I/O 是多少?多少空间将使用多张表而不是一张表?我正在考虑 Wordpress 如何处理多博客功能,因为我正在开始一个新项目并且正在寻找最佳方法。

mysql performance database-design database-recommendation

3
推荐指数
1
解决办法
5885
查看次数

存储大量用户加密数据的最佳方法是什么?

我将要开发一个主要存储用户加密数据的应用程序。每条数据都通过 AES 密钥加密,AES 密钥本身使用每个授权用户的公共 RSA 密钥加密。

鉴于非加密数据的数量可以忽略不计(可能只有用户登录、一些日期和外键),我想知道“标准 DBMS”如 PostgreSQL 或 MySQL 是否是一个不错的选择。

事实上,这些 DBMS 经过优化,可以处理不同类型的数据(文本、整数、日期等)、索引、流程演算、聚合等。

就我而言,我将存储的绝大多数数据都是大块的文本(或者可能是二进制数据)。大部分所需的演算将在客户端解密后进行处理。

因此,我将无法解析我的数据。所以即使我有一个庞大的数据库,它也不会被称为“大数据”。但是,我想知道 MongoDb、MemSQL 或其他任何东西是否不是更准确的选择。如果没有,最好的 DBMS 是什么以及将它用于我的目的的最佳方式是什么?

换句话说,我认为每个 DBMS 都必须做出牺牲,以便在最重要的功能上更高效。我也认为上面详述的案例不是那么随意。所以我假设有很多我不需要的功能(或者我不能使用,例如 FULLTEXT 搜索)。另一方面,我可能需要被“标准 DBMS”丢弃的特性。

encryption dbms

3
推荐指数
1
解决办法
2926
查看次数

3
推荐指数
1
解决办法
6491
查看次数

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

如何在postgres的表上创建`而不是`触发器?

我想在 postgresql 中为一个表创建一个触发器。我的表包含有关事件的数据,包括房间号、开始时间和事件持续时间。在新插入表时,我想检查新事件的房间号在新事件发生时是否会很忙。如果是这样,那么我想引发异常,否则将新事件插入表中。我想将触发器声明为instead of触发器,insert但 postgres 不允许在表instead ofinsert操作触发器(我不想只为触发器创建视图)。

我该如何解决这个问题?理论上我可以创建一个after触发器,然后检查新插入的数据是否有效,如果无效则删除。但这在概念上似乎是错误的方法,实际上也可能是错误的(我不确定触发器是否是原子的,也许有人可能已经根据错误的数据做出了错误的决定)。

这是表定义:

create table room_schedule(
  start_date date,
  start_time time,
  room_no int,
  event_id int,
  duration interval,
  primary key(start_date, start_time, room_no, event_id)
);
Run Code Online (Sandbox Code Playgroud)

这是我的触发器和函数定义:

create or replace function inserttrigfunc() returns trigger as $$
declare count int;

begin

with end_time_table(eid, stime, etime) as (
        select event_id, start_time, (start_time + duration) as etime from room_schedule
        where room_no=new.room_no
    ),
        overlapping_time_table(eid, stime, etime) as(
            select * from end_time_table
            where …
Run Code Online (Sandbox Code Playgroud)

postgresql trigger insert functions

3
推荐指数
1
解决办法
1529
查看次数

SQL Server 2014-我们可以停止 sql 自动重新编译过程吗?

有没有办法检查是什么导致存储过程重新编译(索引重建、统计更新和参数嗅探除外 - 无需运行分析器跟踪或扩展事件),我们是否可以停止/取消/终止自动重新编译过程以减少 CPU 负载?

sql-server sql-server-2014

3
推荐指数
1
解决办法
196
查看次数