我正在尝试使用 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) 我的数据库中有一个表,我们用作文件存储,文件本身存储在一个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) 我想查看 SQL 服务器上的活动。所以我可以在服务器负载低时运行查询。我知道 SQL Server 中有一个活动监视器,但我的公司不希望我授予使用此工具的权利。显然,您可以杀死其他人的查询,这太危险了。
有没有办法用代码检查服务器的状态?(或者在不需要这些权限的情况下查看活动以便我可以手动运行它们?)
所以有一个链接服务器。但是,在展开目录下拉列表后,我目前无法从 SSMS 中查看与该链接服务器关联的所有数据库。我的理解是这可能是权限问题。但是,我不确定我需要授予哪些权限才能与来自链接服务器的 tat db 进行交互。
有任何想法吗?
从链接服务器执行以下命令后:
select * from [<server>].[<database>].[dbo].table1
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
链接服务器 "" 的 OLE DB 访问接口 "SQLNCLI10" 不包含表 """."dbo"."table1""。该表不存在或当前用户对该表没有权限。
TLDR;
问题:我不确定如何显示与我的链接服务器关联的数据库之一。!
我对 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 向前启动(...是的,仍然有一些古老的版本...)
任何人都可以帮我找到合适的查询来实现这一目标吗?
我正在使用的数据库/表将其所有日期值保存为日期时间(没有时区)。
如何找出该日期所在的时区?
例如,中欧夏令时 (+02) 从 2015 年 3 月 29 日开始,而之前的冬季时间 (+01) 从 2014 年 10 月 26 日开始。
假设我看到的日期是2014-11-06,是否有一个函数可以用来检查它属于哪个时区?
注意,我知道时区变化时会有一些边缘情况
如果需要的话,我对一些大的CASE WHEN语句感到满意,但当然更愿意使用一些系统函数。
我有XML 结构,它是我的存储过程的输入参数。它包含带有& 的元素(在 XML 中转义)。当我提取该元素以VARCHAR接收& 时,它不是有效的 XML 字符。在再次转换为 XML 之前,我需要对其进行转义。如何做到这一点没有REPLACE?
我有以下文字:param1=xyz¶2=dasdasdfdas¶m3。它是查询字符串的一部分。我将其转换XML并作为 XML 结构的一部分发送:
<zzz xmlns="http://example.com">
<aaa>aaa</aaa>
<bbb>param1=xyz&para2=dasdasdfdas&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 没有转义,所以我出错了。
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)", …
我们正在使用 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) 尽管听起来可能与这个问题有关,但事实并非如此,因为我很喜欢使用 unix 套接字而不是 TCP/IP 套接字。
但是,我无法使用 unix 套接字和带有 pgAdmin4 的 ssh 隧道连接到远程 PostgreSQL 数据库。pgAdmin 总是声称服务器拒绝连接并要求输入密码,这让我感到奇怪。当 sshing 进入服务器并使用 psql 时,可以使用 unix 套接字(/var/run/postgresql)完美地建立连接。是否需要设置任何特殊的东西来允许这样的设置,或者这甚至可能是 pgAdmin 本身的一个错误?我很感激任何解决此问题的想法,而不必求助于远程端的 TCP/IP 连接。
我还从我当前的配置中发布了一些屏幕:
sql-server ×7
t-sql ×4
connectivity ×1
datetime ×1
ddl ×1
erwin ×1
index ×1
logins ×1
pgadmin-4 ×1
postgresql ×1
statistics ×1
string ×1
varbinary ×1
xml ×1