小编a_h*_*ame的帖子

数据库镜像 - 混合 SQL Server 2012 到 SQL Server 2016

我很确定答案是什么,但我想确认一下。有没有办法创建 SQL Server 2012 到 SQL Server 2016 的混合数据库镜像。

sql-server mirroring

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

Oracle 对应于 `pg_cancel_backend`

将 Oracle 语句ALTER SYSTEM KILL SESSION ...视为...在某种程度上可与 PostgreSQL 语句相媲美SELECT pg_terminate_backend()

您知道ALTER SYSTEM KILL SESSIONPostgreSQL的任何 Oracle 类比(比 更好)SELECT pg_cancel_backend()吗?


参考:9.26。系统管理功能(PostgreSQL 文档)

pg_terminate_backend

终止一个后端。您可以针对与调用该函数的用户具有完全相同角色的另一个后端执行此操作。在所有其他情况下,您必须是超级用户。

pg_cancel_backend

取消后端的当前查询。您可以针对与调用该函数的用户具有完全相同角色的另一个后端执行此操作。在所有其他情况下,您必须是超级用户。

oracle

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

在Exception语句中执行sql文件

嗨,当我执行假脱机文件时,我试图在异常语句中执行 SQL 文件。

我有这样的事情:

column dt new_value _dt 
select to_char(sysdate,'yyyymmdd_hh24mi') dt from dual; 
set line 10000;
set pagesize 50000;
set serveroutput on;

spool .\backup\backup.sql

select dbms_metadata.get_ddl(object_type, object_name)
from user_objects
where object_type in ('FUNCTION')
and object_name = 'TEST_TABLE';

Spool Off

spool .\!Run_&_dt..txt

BEGIN
    raise_application_error( -20001, 'This is a custom error' );
EXCEPTION 
    WHEN OTHERS THEN
        Prompt ./backup/backup.sql
        @ ./backup/backup.sql
END;

Spool Off
Run Code Online (Sandbox Code Playgroud)

我得到下一个错误:

>> BEGIN
     raise_application_error( -20001, 'This is a custom error' );
EXCEPTION 
    WHEN OTHERS THEN
        Prompt ./backup/backup.sql
        @ ./backup/backup.sql …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2 plsql

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

Any 和 All sql 子句

select id 
from master_tabe 
where id = ALL (select id from user_table where name = 'Nikhil')

select id 
from master_tabe 
where id = ANY (select id from user_table where name = 'Nikhil')
Run Code Online (Sandbox Code Playgroud)

上面提到的查询返回相同的结果集。据我所知,应该有不同的结果集,因为 user_table 只有一条与姓名 Nikhil 相关的记录。因此,根据此 Any 子句必须返回 1 行,而 All 必须返回 0 条记录。而当我在 user_table 中添加一条记录时,All 子句语句返回 0 行,而 Any 子句仅返回 1 行。

有人可以调查一下吗?

sql-server

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

如何计算没有零的小数

如何计算所有小数位直到第一个零

例如,我有一个名为 x 的列,其中包含一个数值数据类型值 1.955000000

我想计算没有零的小数位。所以在这里我希望查询输出 3 而不是 9(带零)

postgresql query decimal

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

Postgresql 11.5 安装问题

在安装 PostgreSQL 时,我不断收到消息:

“运行安装后步骤时出现问题。安装可能无法正确完成数据库集群初始化失败。”

这似乎阻止我正确使用 PGadmin。

在安装日志中,我发现以下部分似乎表明出了什么问题。

我一直无法找到解决此问题的方法。

Executing batch file 'rad7C33E.bat'...
    The program "postgres" was found by "C:/Program Files/PostgreSQL/11/bin/initdb.exe"
but was not the same version as initdb.
Check your installation.

Called Die(Failed to initialise the database cluster with initdb)...
Failed to initialise the database cluster with initdb

Script stderr:
 Program ended with an error exit code

Error running cscript //NoLogo "C:\Program Files\PostgreSQL\11/installer/server/initcluster.vbs" "NT AUTHORITY\NetworkService" "postgres" "****" "C:\Users\JesseDanckaarts\AppData\Local\Temp/postgresql_installer_6f373c7c91" "C:\Program Files\PostgreSQL\11" "C:\Program Files\PostgreSQL\11\data" 5432 "Dutch,Netherlands" 0: Program ended with an error …
Run Code Online (Sandbox Code Playgroud)

postgresql installation

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

具有不同格式查找的电话号码

我的数据库中存储了不同的电话格式,例如:

727.170.4799
1-416-958-6390
1.561.374.4268
(813) 929-5892
Run Code Online (Sandbox Code Playgroud)

此表中大约有约 200 万条记录,因此修改需要很长时间。我需要通过执行电话查找来查找记录。

我控制的一件事是输入,我可以保证它将是数字。但是我不知道他们是否要输入带有或不带有国家/地区代码的数字,因此以这个数字为例,1-416-958-6390这两个都用于查找:

14169586390
4169586390
Run Code Online (Sandbox Code Playgroud)

应该返回同一行 ( 1-416-958-6390)

如何尽可能高效地拨打电话号码?

这是我得到的,但它超级慢(正如预期的那样):

select * from patients
WHERE ( REPLACE(phone_number, '-', '') LIKE '%4169586390' )
Run Code Online (Sandbox Code Playgroud)

postgresql

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

SQL Server 安装程序似乎将 MSDB 恢复模式重置为简单

每次我们升级 SQL Server 安装(服务包或累积更新)时,msdb都会从 FULL 恢复模式更改为 SIMPLE 恢复模式。

我知道msdb数据库没有太大变化,并且在 SIMPLE 中使用它是很常见的,但我想知道为什么安装程序要更改它。它导致我的备份软件出错。

以下是安装日志的摘录:

2020-02-15 03:06:38.25 spid8s      Starting execution of MSDB.SQL
2020-02-15 03:06:38.25 spid8s      ----------------------------------
2020-02-15 03:06:38.35 spid8s      Configuration option 'allow updates' changed from 0 to 1. Run the RECONFIGURE statement to install.
2020-02-15 03:06:38.35 spid8s      Configuration option 'allow updates' changed from 0 to 1. Run the RECONFIGURE statement to install.
2020-02-15 03:06:38.56 spid8s      Checking the size of MSDB...
2020-02-15 03:06:39.41 spid8s       
2020-02-15 03:06:39.41 spid8s      Setting database option …
Run Code Online (Sandbox Code Playgroud)

sql-server msdb recovery-model

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

SQL Server 触发器的性能

我来自 Oracle/PostgreSQL 背景,很难应对 SQL Server 触发器实现的限制。

datetime如果不同列的值发生变化,我想更新两个不同的列。这是为了记录该行的两个特定状态变化。

现在 SQL Server 既没有行级触发器,也没有before update触发器。所以我的理解是,我需要加入插入和删除以找出是否发生了状态更改以及发生了哪些状态更改,然后对正在更新的表再次运行“常规”更新。

我的触发器目前看起来像这样:

create trigger ord_status_history_trigger
  on jobs
AFTER UPDATE
AS
  IF ( UPDATE(order_status) )
  BEGIN
    update jobs
      set  transfercomplete = case
                                when o.order_status = 'initial' and n.order_status = 'sent' then current_timestamp
                                else n.transfercomplete
                              end,
           installcomplete = case
                               when o.order_status = 'delivered' n.order_status = 'installed' then current_timestamp
                               else n.installcomplete
                            end
      from inserted n
        join deleted o on o.jobid = n.jobid
        join jobs aj on aj.jobid = n.jobid; …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2005

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

依赖外键约束来避免删除

在 PostgreSQL 中,我有 2 个具有父/父关系的表。如果没有孩子的记录与之关联,我希望删除父亲记录(使用后触发器)

目前,我一直在做类似的事情

  1. 获取记录数(与当前子项具有相同的父 ID)
  2. 如果计数为1,则删除当前子记录并删除其父记录
  3. 如果计数大于 1,则删除子记录(因为更多子记录依赖于父记录)

我想知道我是否直接触发删除语句而不获取父记录的计数,例如

  1. 删除子记录
  2. 删除父记录(如果有依赖会抛出错误)

在这种情况下,如果任何子项与父项相关联(通过外键),它将抛出错误并且不会被删除

第二种方法是否正确,要完成此操作,是否在 PostgreSQL 中记录了此类错误(外键约束依赖项)

postgresql

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