我正在尝试使用 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) 我对 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 向前启动(...是的,仍然有一些古老的版本...)
任何人都可以帮我找到合适的查询来实现这一目标吗?
每天晚上,我们将生产数据库脱机、分离,然后重新附加它以在备份程序开始之前切断所有活动连接。第一个命令是:
USE master
ALTER DATABASE thedb SET OFFLINE WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
此命令过去需要 20 秒到两分钟才能完成,这是可以接受的。从过去几周开始,它需要 15 分钟到一个多小时才能完成。数据库使用情况没有任何变化会导致此问题,并且仅发生大约 3/4 的时间。
据我所知,我们没有更改任何会导致这种情况的设置。我的理解是 WITH ROLLBACK IMMEDIATE 切断了所有连接,数据库立即脱机。我曾尝试调查以下内容:
我们目前在没有镜像的简单恢复模式下运行 MSSQL Server 2012(标准版)。数据库大小约为 300 GB。
任何帮助表示赞赏,谢谢!
将数据从 SQL Server 2000 迁移到 SQL Server 2008 后,当我在表中执行任何查找数据库中更多行的事务时,这给了我错误。
Transaction (Process ID 59) was deadlocked on lock resources with
another process and has been chosen as the deadlock victim.
Rerun the transaction.
Run Code Online (Sandbox Code Playgroud)
表上有 3 个触发器(插入、更新、删除)。我怎么解决这个问题?
这是我的情况。
[distribution]数据库附加到这个新实例select * from sysservers (正确地)返回分发服务器仍然是集群上的第一个实例。如果我在发布者上运行以下内容(或者这甚至可能),它会多么糟糕?
sp_configure ‘allow updates’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
update sysservers set datasource = 'server\instance' where srvname = 'repl_distributor';
GO
sp_configure ‘allow updates’, 0
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)
这是最好的方法,还是有其他方法可以改变分销商?
我正在使用 SQL Server 2008 Sp3
最近我在 SQL 日志中遇到错误:
错误:18059,严重性:20,状态:1
。连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。
我通过 Profiler 找到了相关的原始服务器和应用程序。
我搜索并发现有人说我需要更改应用程序连接字符串中的连接池。
以下是相关Web.Config文件:
<?xml version="1.0"?>
<appSettings>
<add key="Main.ConnectionString" value="Data Source=db-002\db2;Initial
Catalog=APPDB;TRUSTED_CONNECTION=YES"/>
<add key="ConnectionHash" value="==QMr1meolHO3YWdTNFOzcTO"/>
<add key="Database" value="[APPDB]"/>
<add key="UseApprole" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我在我们的测试环境中将其更改为以下内容:
<?xml version="1.0"?>
<appSettings>
<add key="Main.ConnectionString" value="Data Source=db-002\db2;Initial
Catalog=APPDB;TRUSTED_CONNECTION=YES;Pooling=false"/>
<add key="ConnectionHash" value="==QMr1meolHO3YWdTNFOzcTO"/>
<add key="Database" value="[APPDB]"/>
<add key="UseApprole" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我已经重置了应用程序、服务和 IIS。检查应用程序,它的工作原理。
有一段时间我没有再收到这些错误,但 3 小时后它们又恢复了。
谁能给我一个想法我能做什么?
我正在尝试使处于恢复挂起状态的 SQL Server 数据库联机并可访问。SQL Server 服务使用一个 Active Directory 帐户,该帐户是域管理员并且是sysadminsql server 上的成员。SQL Server 帐户应该拥有 SQL 文件夹中的权限,因为它是域管理员。但是,它不是 SQL Server 中的本地管理员。
错误消息是:
消息 5120,级别 16,状态 101,第 1 行无法打开物理文件“F:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DBName.ndf”。操作系统错误 5:“5(访问被拒绝。)”。消息 5120,级别 16,状态 9,第 1 行无法打开物理文件“F:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DBName.ndf”。操作系统错误 5:“5(访问被拒绝。)”。
尽管
alter database [DBName] set online;
Run Code Online (Sandbox Code Playgroud)
导致以下错误:
消息 945,级别 14,状态 2,第 1 行由于无法访问的文件或内存或磁盘空间不足,无法打开数据库“databs”。有关详细信息,请参阅 SQL Server 错误日志。消息 5069,级别 16,状态 1,第 1 行 ALTER DATABASE 语句失败。
你能想到解决办法吗?
我有一个填充物化视图的耗时查询。它已经运行了 18 个小时 - 这是意料之外的。
SELECT STATUS
FROM V$SESSION
WHERE SID=194;
Run Code Online (Sandbox Code Playgroud)
上面的查询将会话显示为“ACTIVE”。我想知道这是否足以证明查询仍在运行,以及是否有任何其他方法可以仔细检查会话是否已死。
更新
会话并没有死;但一直在等待:
SQL*Net more data from dblink
Run Code Online (Sandbox Code Playgroud)
我按照 Phil 的建议使用了 sql trace 得出了这个结论。
我们可以配置基于证书的身份验证来连接(登录)sql 客户端吗?或使用相互身份验证(sql server 和 sql client)连接 sql 客户端的任何其他方法?
这是一个有助于我理解的理论问题。在sql server中从完全恢复模式切换到简单恢复模式的过程是什么?
是不是流程如下:
我想我的主要问题是关于第 1 点。如果我不进行 trans log 备份,将 SIMPLE 丢弃最终 trans log 中的任何数据,或者切换到 SIMPLE 备份 trans log(我认为不会)。
此外,我认为最好的做法是在切换到 SIMPLE 后执行完整备份,以便可以在检查点将新事务从 trans 日志推送到数据文件。
sql-server ×5
backup ×2
recovery ×2
security ×2
corruption ×1
ddl ×1
deadlock ×1
errors ×1
erwin ×1
logins ×1
oracle ×1
replication ×1
session ×1
ssl ×1
t-sql ×1
transaction ×1
trigger ×1