小编Col*_*art的帖子

ERWIN 创建和使用数据库

我正在尝试使用 ERWIN 7 从我的逻辑模型生成物理数据库。

在自动生成的脚本中一切都很好,唯一的问题是模型是在默认 SQL Server 的数据库“master”中创建的,而不是在我与模型一起插入的数据库中创建的。

我找不到将我的 MODEL 与我与模型一起创建的数据库相关联的方法。

这是 ERWIN 自动生成的脚本:

CREATE DATABASE Movies go
ALTER DATABASE Movies SET  RECOVERY FULL go
CREATE SCHEMA fbd AUTHORIZATION dbo go
CREATE DEFAULT Default_Value_movies_gen   AS 1 go
CREATE DEFAULT Default_Value_titulo_movies    AS 'No title' go
Run Code Online (Sandbox Code Playgroud)

但它应该自动生成:

CREATE DATABASE Movies go 
--Here should be "USE Movies",to use database that ERWIN have just created
ALTER DATABASE Movies SET RECOVERY FULL go
CREATE SCHEMA fbd AUTHORIZATION dbo go
CREATE DEFAULT Default_Value_movies_gen AS 1 go …
Run Code Online (Sandbox Code Playgroud)

database-design sql-server ddl erwin

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

SQL Server - Varbinary 列 - 统计更新速度极慢

我的数据库中有一个表,我们用作文件存储,文件本身存储在一个varbinary列中,直到最近这一切似乎都运行良好,我们注意到该表的一个实例基本上“卡住”了插入语句.

检查sys.dm_os_waiting_tasks显示插入语句触发了统计更新,并且此统计更新花费了长时间。(17 分钟)。

这是我们发现运行的语句:

SELECT StatMan([SC0], [LC0]) FROM 
   (SELECT TOP 100 PERCENT CONVERT([varbinary](200), 
        SUBSTRING ([Data], 1, 100)++substring([Data], 
        case when LEN([Data])<=200 then 101 else 
        LEN([Data])-99 end, 100)) AS [SC0], 
        datalength([Data]) AS [LC0] 
    FROM [FileSystem].[FileData] WITH 
    (READUNCOMMITTED) ORDER BY [SC0] ) AS _MS_UPDSTATS_TBL
Run Code Online (Sandbox Code Playgroud)

该表中大约有 2000 行,如下所示:

CREATE TABLE [FileSystem].[FileData]
(
[Id] [uniqueidentifier] NOT NULL CONSTRAINT [DF__FileData__Id__09DE7BCC] DEFAULT     (newsequentialid()),
[Data] [varbinary] (max) NULL,
[FileHash] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[FileSize] [bigint] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] …
Run Code Online (Sandbox Code Playgroud)

statistics sql-server-2008-r2 varbinary

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

使用代码检查服务器活动

我想查看 SQL 服务器上的活动。所以我可以在服务器负载低时运行查询。我知道 SQL Server 中有一个活动监视器,但我的公司不希望我授予使用此工具的权利。显然,您可以杀死其他人的查询,这太危险了。

有没有办法用代码检查服务器的状态?(或者在不需要这些权限的情况下查看活动以便我可以手动运行它们?)

sql-server-2008 sql-server activity-monitor

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

链接服务器上缺少数据库

所以有一个链接服务器。但是,在展开目录下拉列表后,我目前无法从 SSMS 中查看与该链接服务器关联的所有数据库。我的理解是这可能是权限问题。但是,我不确定我需要授予哪些权限才能与来自链接服务器的 tat db 进行交互。

有任何想法吗?

从链接服务器执行以下命令后:

select * from [<server>].[<database>].[dbo].table1
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

链接服务器 "" 的 OLE DB 访问接口 "SQLNCLI10" 不包含表 """."dbo"."table1""。该表不存在或当前用户对该表没有权限。

TLDR;

问题:我不确定如何显示与我的链接服务器关联的数据库之一。

sql-server linked-server

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

如何将默认数据库更改为所有登录名?

我对 SQL Server 有点陌生,我正在尝试编写 Microsoft SQL Server (2005-2014) 安装后活动的脚本,但我在更改登录时遇到了一些困难。公司政策规定没有登录应该默认使用 master 数据库,因此我的计划是识别所有默认使用 master 的登录并将 master 更改为 tempdb。

可以使用这样的查询更改单次登录:

ALTER LOGIN [sa] WITH DEFAULT_DATABASE = tempdb
Run Code Online (Sandbox Code Playgroud)

试图在所有登录中实现这一点(不知道它们的数量和名称),我知道我很天真,希望这样的事情会起作用(但不得不尝试):

UPDATE master..syslogins
SET dbname = 'tempdb'
WHERE dbname = 'master'
Run Code Online (Sandbox Code Playgroud)

显然输出是一个错误(逻辑上):

Ad hoc updates to system catalogs are not allowed.

SQL Server 处于 MIX 身份验证模式,因此几乎所有内容都可以登录 - SQL 登录、Windows 本地或域用户或组(不确定这是否会对解决方案产生任何影响)。解决方案应该与版本无关,但是假设从 SQL Server 2005 向前启动(...是的,仍然有一些古老的版本...)

任何人都可以帮我找到合适的查询来实现这一目标吗?

sql-server t-sql logins

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

如何检查给定日期时间的时区?

我正在使用的数据库/表将其所有日期值保存为日期时间(没有时区)。

如何找出该日期所在的时区?

例如,中欧夏令时 (+02) 从 2015 年 3 月 29 日开始,而之前的冬季时间 (+01) 从 2014 年 10 月 26 日开始。

假设我看到的日期是2014-11-06,是否有一个函数可以用来检查它属于哪个时区?

注意,我知道时区变化时会有一些边缘情况

如果需要的话,我对一些大的CASE WHEN语句感到满意,但当然更愿意使用一些系统函数。

sql-server t-sql datetime

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

在转换为 XML 之前如何在 TSQL 中转义 XML 字符?

我有XML 结构,它是我的存储过程的输入参数。它包含带有& 的元素(在 XML 中转义)。当我提取该元素以VARCHAR接收& 时,它不是有效的 XML 字符。在再次转换为 XML 之前,我需要对其进行转义。如何做到这一点没有REPLACE

我有以下文字:param1=xyz&para2=dasdasdfdas&param3。它是查询字符串的一部分。我将其转换XML并作为 XML 结构的一部分发送:

<zzz xmlns="http://example.com">
  <aaa>aaa</aaa>
  <bbb>param1=xyz&amp;para2=dasdasdfdas&amp;param3</bbb>
</zzz>
Run Code Online (Sandbox Code Playgroud)

在存储过程中,我需要提取它。我这样做:

ISNULL(NULLIF(LTRIM(RTRIM(@XMLInput.value('declare default element namespace "http://example.com"; (zzz/bbb)[1]', 'NVARCHAR(250)'))), ''), '');
Run Code Online (Sandbox Code Playgroud)

之后,该值包含普通文本(& -s 未转义 - &)。

经过一些处理后,我需要将该字符串放入其他 XML 中。我做:

CAST( ... AS XML);

因为& -s 没有转义,所以我出错了。

xml sql-server t-sql type-conversion

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

varchar(MAX) text cuts off while going more than 8000 characters inside a procedure

I have a procedure in which i have declared a variable with datatype varchar(MAX),

declare @str varchar(MAX);

set @str='select * from Table1...'

print (@str);
exec (@str);
Run Code Online (Sandbox Code Playgroud)

but when the text written inside @str goes above 8000 characters (i.e. 8193 characters) it cuts off the string and prints only 8000 characters and executing it gives error off course.

I have tried 2 solutions after some search, but it doesn't work.

1) I have tried using 2 variables of same type "varchar(MAX)", …

t-sql string sql-server-2014

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

FillFactor:Ola Hallengren 的 IndexOptimize 脚本

我们正在使用 Ola Hallengren 的 IndexOptimize 脚本在 SQL Server 2008 和 2012 上重建索引。这些维护脚本非常好,并且已经为我们的数据库工作了几个月。但是,最近我注意到它在对数据库执行索引重建后将 FillFactor 更改为 90,即使 FillFactor 参数为NULL.

在执行脚本之前,我检查sys.indexes了所有索引的 FillFactor 是否为 0,但我不确定为什么脚本在完成后将 FillFactor 更改为 90。这在数据库上造成了很多问题。

您是否知道这是否是 IndexOptimize 脚本中 FillFactor 更改为 90 的预期行为?

这是我执行的:

EXECUTE dbo.IndexOptimize
 @Databases = 'dbname',
 @FragmentationLow = NULL,
 @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
 @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
 @FragmentationLevel1 = 5,
 @FragmentationLevel2 = 30,
 @LogToTable = 'Y'
Run Code Online (Sandbox Code Playgroud)

index sql-server ola-hallengren

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

PgAdmin 4 - 如何通过 ssh 隧道使用 unix 套接字连接到数据库?

尽管听起来可能与这个问题有关,但事实并非如此,因为我很喜欢使用 unix 套接字而不是 TCP/IP 套接字。

但是,我无法使用 unix 套接字和带有 pgAdmin4 的 ssh 隧道连接到远程 PostgreSQL 数据库。pgAdmin 总是声称服务器拒绝连接并要求输入密码,这让我感到奇怪。当 sshing 进入服务器并使用 psql 时,可以使用 unix 套接字(/var/run/postgresql)完美地建立连接。是否需要设置任何特殊的东西来允许这样的设置,或者这甚至可能是 pgAdmin 本身的一个错误?我很感激任何解决此问题的想法,而不必求助于远程端的 TCP/IP 连接。

我还从我当前的配置中发布了一些屏幕:

连接选项卡

ssh 隧道选项卡

postgresql connectivity pgadmin-4

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