AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-136

bernd_k's questions

Martin Hope
bernd_k
Asked: 2013-09-07 01:17:32 +0800 CST

如何删除当前正在使用且处于单用户模式的 SQL Server 数据库

  • 9

我在 SQL Server 2008 上有一个数据库,我想删除它。目前它处于单用户模式,并且正在使用中。

select * from sys.sysprocesses

返回

Msg 924, Level 14, State 1, Line 1
Database 'G_MAIN_DE' is already open and can only have one user at a time.

而且我不知道如何识别我必须杀死的会话。

尝试将其设置为离线

ALTER DATABASE G_MAIN_DE SET OFFLINE WITH ROLLBACK IMMEDIATE

产量

Msg 5064, Level 16, State 1, Line 1
Changes to the state or options of database 'G_MAIN_DE' cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
sql-server
  • 4 个回答
  • 46147 Views
Martin Hope
bernd_k
Asked: 2012-03-12 00:02:17 +0800 CST

SQL Server 2012 中 EXEC sp_dboption <dbname> 的替代品是什么?

  • 1

从microsoft connect你了解到,它是被设计封闭的。但他们没有告诉如何更换

EXEC sp_dboption master

查询当前的数据库选项。

sql-server-2012
  • 1 个回答
  • 2150 Views
Martin Hope
bernd_k
Asked: 2012-01-05 01:38:54 +0800 CST

有人有一个函数可以将哈希字节扩展到任意长度的字符串吗?

  • 4

我想将它应用于过程定义。

我的基本想法是将 nvarchar(max) 类型的字符串拆分为 nvachar(4000) 块并将 HashBytes('MD5',chunk) 的结果连接起来。

我无法想象这还没有完成。

sql-server
  • 1 个回答
  • 3155 Views
Martin Hope
bernd_k
Asked: 2011-12-23 01:55:31 +0800 CST

ANSI/ISO SQL-92 规范(第 8.2 节,通用规则 #3)中不是制表符 (char(9) ) 空格吗?

  • 1

如果有任何合理的理由忽略 varchar 比较中的尾随空格,为什么这也不适用于制表符?

在 SQL Server 上我得到

SELECT
    case when '' = ' ' then 'true' else 'false' end, 
    case when '' = CHAR(9) then 'true' else 'false' end

产量

---- -----
true false

这是 ANSI 规范的问题还是 SQL Server 实现的问题?

编辑:

我无权访问规范的文本。我只看到这个答案中提到了它。我不知道它是否只针对空格,或者它是否在某种模糊的意义上指代空格。

sql-server
  • 1 个回答
  • 1949 Views
Martin Hope
bernd_k
Asked: 2011-12-22 07:25:03 +0800 CST

如何编写检查约束以禁止空 varchar 字段?

  • 5

在 SQL Server 上,不可为空的 varchar 列可以包含空字符串。

在 ORACLE 下它们不能,因为 varchar2 将 '' 视为等同于 NULL。

如果您设计一个适用于这两种 RDBMS 的数据库架构,那么在 SQL Server 上的每个不可为空的 varchar 列中添加一个不允许空字符串的约束似乎是一个好主意。

但是,制定这种约束的最佳方式是什么?

我从

if OBJECT_ID('varchar_without_empty_cols') > 0 drop table varchar_without_empty_cols
go

create table varchar_without_empty_cols (
id int ,
val varchar(10) not null CHECK (val <> '') 
)
go


insert into varchar_without_empty_cols values (1, ' ')  -- this ought be OK
go
insert into varchar_without_empty_cols values (2, '')   -- this has to violate the check
go
insert into varchar_without_empty_cols values (3, null) -- this violates the not null
go 

select * from varchar_without_empty_cols

但是这个约束不仅禁止空字符串,这是有意的,而且还禁止由单个字符组成的字符串,这不是我想要的。

sql-server constraint
  • 1 个回答
  • 9206 Views
Martin Hope
bernd_k
Asked: 2011-12-21 04:08:47 +0800 CST

空字符串:为什么或何时''等于''?

  • 18

谁能解释为什么

select case when '' = ' ' then 1 else 0 end, LEN(''), LEN(' '), DATALENGTH(''), DATALENGTH(' ');

产量

----------- ----------- ----------- ----------- -----------
1           0           0           0           1

有趣的结果是,在

create table test ( val varchar(10) );
insert into test values( '' );
update test set val = ' ' where val = '';

更新确实会将空字符串替换为空白,但 where 子句保持为真,并且更新语句的重复执行告诉

(1 row(s) affected)
sql-server-2008 empty-string
  • 1 个回答
  • 6974 Views
Martin Hope
bernd_k
Asked: 2011-12-20 22:56:15 +0800 CST

如何仅捕获和处理特定的 Oracle 异常?

  • 22

从这个和这个我猜,ORA-00955 没有预定义的命名系统异常。

如何重写以下内容以仅捕获错误 ORA-00955?

begin
      EXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1';
exception when OTHERS then
    Null;
end;

顺便说一句,是否有任何语法可以通过提供错误代码来捕获错误?

oracle exception
  • 2 个回答
  • 69779 Views
Martin Hope
bernd_k
Asked: 2011-11-01 05:21:11 +0800 CST

有没有办法只在定义更改时替换 SQL Server 存储过程?

  • 4

我知道以下两种模式来编写用于创建存储过程的脚本,可以重复执行而不会引发错误。

if object_id('my_proc') > 0 drop procedure my_proc
go
create procedure dbo.my_proc as Print 'This is not a dummy';

另一个保留权限

if object_id('my_proc') is null
    EXEC ('create procedure dbo.my_proc as Print ''This is a dummy''');
go
ALTER PROCEDURE dbo.my_proc as Print 'This is not a dummy';
    

我猜当程序存在并且它的哈希码与新版本的相同时,就不需要删除并重新创建或更改程序。

我的问题是HashBytes被限制为最大 8000 字节,我不能像一般使用它一样

if object_id('my_proc') is null
    EXEC ('create procedure dbo.my_proc as Print ''This is a dummy''');
go
if object_Id('my_proc') > 0
and
(
Select HashBytes('MD5',definition) MD5
from sys.sql_modules m
join sysobjects o on o.id = m.object_id
where o.name = 'my_proc'
) <> 0x9028A1B9D93AC7592EC939CCABF9D3DE
begin
    print 'definition has changed';
    EXEC ('ALTER PROCEDURE dbo.my_proc as Print ''This is not a dummy''');
end 

对于定义超过 4000 个字符的过程。有什么建议以类似的方式处理这些案件吗?

编辑:

我不仅要避免刷新缓存计划。

我还必须应对具有不同版本的存储过程的不同客户,我只想用更新的版本替换其中一个变体。

sql-server stored-procedures
  • 3 个回答
  • 3174 Views
Martin Hope
bernd_k
Asked: 2011-10-31 23:42:05 +0800 CST

是否有任何原因不能在 SSMS 中默认启用 SQLCMD 模式?

  • 6

我不认为“只是为了确保脚本不需要 sqlcmd-mode”是一个正当理由。

在向我的同事下令启用此设置之前,有什么需要考虑的吗?

sql-server ssms
  • 2 个回答
  • 1856 Views
Martin Hope
bernd_k
Asked: 2011-10-28 00:27:02 +0800 CST

如何将 SQL Server 兼容级别查询到变量中?

  • 3

我知道要查询数据库的当前兼容性级别

declare @dbname sysname
select @dbname = db_name(0)
exec sp_dbcmptlevel @dbname

但这似乎通过打印返回其结果,我发现无法将值分配给变量并使用它来控制 if ... else ... 构造根据当前设置执行不同的代码。

sql-server compatibility-level
  • 1 个回答
  • 7852 Views
Martin Hope
bernd_k
Asked: 2011-10-25 10:07:31 +0800 CST

如何使用 cmptlevel 80 在 SQL 2005 中查找“外部连接”语法?

  • 0

去年圣诞节我很高兴,因为我们停止了对 SQL Server 2000 的支持。

我可以停止扭曲我的大脑并使用友好的分析功能。(相信我,谈到将存储过程从 SQL-Server 迁移到 Oracle 时,分析函数是您最好的朋友之一)。

后来我们发现我们忽略了一个小烦恼。

当客户用新机器更换旧机器时,默认情况下它们的兼容性级别是根据旧机器设置的,问题会推迟到以后出现。

哪个问题?尽管兼容级别为 80,分析函数仍可在 SQL Server 2005 中使用。

我不敢说 PIVOT 等其他新功能被禁止了。

现在是尝试摆脱 cmptlevel 80 的好时机,但是如何呢?

对我来说,它主要是扫描过程、视图、函数和触发器以寻找旧式外部连接,如“*=”和“=*”。

首先让我们从系统表中找到定义文本。最初它以小块的形式保存在syscomments. Hhm 如何处理“*”和“=”被拆分为后续块的情况。

接下来不要浪费时间从 INFORMATION_SCHEMA.ROUTINES 中选择 ROUTINES它会将定义截断为 4000 个字符。

最后,这是查询有问题的对象的代码:

select o.name , o.type, datalength(definition) len, len(definition) len, definition from sys.sql_modules m 
join sysobjects o on o.id = m.object_id
where (definition like '%*=%' or definition like '%=*%') 

但是还有一个障碍。因为默认值是从默认值派生的,所以文本结果的默认宽度太小(我认为它是 256,但由于这是我在 SSMS 中更改为 8192 的第一件事,我不会打赌)。

无论如何,这有助于识别需要更深入检查的行。

也许 sp_help 会显示所有可能情况的完整定义。

也许是这样,我不确定,因为我厌倦了穿孔卡片头造成的问题。通常我使用 ADO 和 PowerShell,但客户机器上可能没有安装它们。

是否有任何 100% 防水的 T-SQL 脚本来完成显示或导出由某些条件找到的过程的完整定义的工作?

t-sql procedure-definition
  • 1 个回答
  • 259 Views
Martin Hope
bernd_k
Asked: 2011-09-21 02:45:36 +0800 CST

如何在 Oracle 上查询给定的授权?

  • 7

在数据库上,我必须执行以下两个语句:

GRANT CREATE ANY TABLE TO MyUSER;
GRANT DROP ANY TABLE TO MyUSER;

我想念的是那个告诉我这些赠款已经给予的查询。我没有看到他们

select * from USER_TAB_PRIVS ORDER BY 2 ;
select * from USER_ROLE_PRIVS ORDER BY 1, 2;
oracle
  • 1 个回答
  • 39471 Views
Martin Hope
bernd_k
Asked: 2011-09-07 23:38:20 +0800 CST

来自 SSMS 的 SQLCMDMODE。使用 :r 包含文件时可以设置 -b 模式吗?

  • 2

据我阅读msdn,没有变量对应于命令的 -b 标志(在错误批处理中止时)。在 sqlcmd 模式下运行时,我发现没有在脚本中启用此模式。当从 SSMS 调用时,是否有强制 :r filename 以这种模式运行?

sql-server-2005 sqlcmd
  • 1 个回答
  • 195 Views
Martin Hope
bernd_k
Asked: 2011-09-07 21:59:19 +0800 CST

我可以从脚本内部启用 SQLCMD 模式吗?

  • 19

我可以在脚本中使用类似指令来强制 SSMS 启用/禁用 SQLCMD 模式吗?

sql-server sqlcmd
  • 2 个回答
  • 28152 Views
Martin Hope
bernd_k
Asked: 2011-09-07 21:32:54 +0800 CST

有 SELECT 一个 INSERT 子句吗?

  • 4

我知道表格

Select * into new_table from old_table

陈述。Bur 最近我在这里和这里发现了 2 个帖子,它们使用它就像

SELECT * FROM NhlPlayer
INSERT INTO PlayerBackups

我在msdn中什么也没找到,是一些新语法还是一个错误?我猜是后者,因为

INSERT INTO PlayerBackups
SELECT * FROM NhlPlayer

可以正常工作。

sql-server select
  • 2 个回答
  • 2564 Views
Martin Hope
bernd_k
Asked: 2011-09-07 04:31:42 +0800 CST

什么是假设指标?

  • 2

它们似乎是由 DTA 等工具创建的。

出于实际目的,可以删除、忽略或选择创建它们,但在此之前,它们对数据库没有直接影响。

sql-server index
  • 1 个回答
  • 255 Views
Martin Hope
bernd_k
Asked: 2011-08-30 05:06:00 +0800 CST

Microsoft 兼容级别的含义是什么?

  • 7

在 SQL-Server 2005 上将 cmptlevel 设置为 80 会禁止使用 PIVOT 和 APPLY,但不会影响分析函数的使用。这背后有什么道理吗?

sql-server compatibility-level
  • 2 个回答
  • 23681 Views
Martin Hope
bernd_k
Asked: 2011-08-23 07:54:15 +0800 CST

如何在表中实现取消属性?

  • 4

这是在数据库表中实现取消属性的​​最佳方式,前提是少于 3% 的行被取消。

对于取消的数据,我想存储附加信息

  • 通过谁
  • 什么时候
  • 为什么

在大约 95% 的查询中,我只想选择未取消的行。

此外,我希望能够对未取消列的某些列实施唯一约束。

在某些列中使用 NULL 作为未取消指标的优缺点是什么?

sql-server oracle
  • 4 个回答
  • 436 Views
Martin Hope
bernd_k
Asked: 2011-08-21 00:31:26 +0800 CST

将 glogon.sql 放在 32 位 ODAC (11.2.0.2.1) 中的什么位置?

  • 2

我从这里安装了 32 位 ODAC (11.2.0.2.1) 。Oracle Universal Installer 版本包含 Oracle SQL*Plus 11.2.0.2.0。但是我在安装中缺少 sqlplus/admin/ 文件夹,我通常将 glogin.sql 文件放在那里。

编辑:

此安装是在新的 Windows 7 - 64 位笔记本电脑上进行的,这是我的第一个 64 位 Windows 系统。

最初的想法是不在那里安装任何 Oracle 服务器,但我想我会在前 2 个月内改变主意。

我在文件夹 D:\app\berndk\product\11.2.0\client_1 中找到了 sqlplus.exe。

顺便说一句,此安装没有 sqlplus 子文件夹,并且未设置 ORACLE_HOME 环境变量。因为我不需要 ODBC,所以安装通常效果很好。

oracle
  • 1 个回答
  • 366 Views
Martin Hope
bernd_k
Asked: 2011-08-08 02:24:20 +0800 CST

使用 DTA 还是评估 DMV?

  • 5

目前,我遇到了一个生产 SQL Server 数据库,其中有人添加了 DTA 中几乎所有缺失的索引建议。

表格如何确定索引是否需要或必要我了解到,有 DMV 视图,可用于延迟有关实际索引使用情况和缺失索引的信息。

Jason Strate的脚本仅使用来自该视图的当前信息,而当天的乐趣 - 自动自动索引!将这些视图中的一些信息保存到表中。

另一方面,DTA 需要计划何时运行分析器,选择要分析的内容,并在运行时对性能产生一些影响。

我的印象是,使用 DTA 作为第一步调优工具只是浪费时间,因为它的结果没有涵盖完整的数据库使用情况,新手很难理解,并且可能导致添加太多索引,对写入性能产生负面影响,而通过 DMV 收集数据几乎不需要准备,几乎涵盖了自上次重启以来数据库的全部使用情况。

我的问题集中在向管理层提出哪种战略。我想在第一步中专注于评估 DMV 视图,而完全忽略 DTA。

sql-server sql-server-2008
  • 3 个回答
  • 550 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve