给定一个只有 IDENTITY 列的表,如何插入新行?我尝试了以下方法:
INSERT INTO TABLE
(Syntax error)
INSERT INTO TABLE VALUES()
(Syntax error)
INSERT INTO TABLE (Id) VALUES()
(Syntax error)
Run Code Online (Sandbox Code Playgroud)
我正在测试一些东西,只需要 IDENTITY 列。它不是用于生产。否则,这样的表可以用作序列生成器,不需要其他列。
我正在尝试使用 SQL Server 导入和导出向导将数据从我的生产数据库复制到我的开发数据库,但是当我这样做时失败并出现错误“插入语句与外键约束冲突”我有超过 40 个表FK 约束,是否有一些简单的方法可以解决这个问题,而不必编写删除约束/添加约束脚本?
编辑:我刚刚发现在我正在运行的 SQL Server 的 Web 版中,DTS 不会让您保存包。
有没有办法纯粹在 T-SQL 中从现有表生成创建脚本(即不使用 SMO,因为 T-SQL 无法访问 SMO)。假设一个存储过程接收一个表名并返回一个包含给定表的创建脚本的字符串?
现在让我描述一下我面临的情况,因为可能有不同的方法来解决这个问题。我有一个包含几十个数据库的实例。这些数据库都具有相同的架构、相同的表、索引等。它们是作为第三方软件安装的一部分创建的。我需要有一种与他们合作的方法,以便我可以以特别的方式从他们那里收集数据。dba.se 的好人已经在这里帮助了我如何在不同的数据库中创建触发器?
目前我需要找到一种方法来从所有数据库的表中进行选择。我已将所有数据库名称记录到一个名为的表中,Databasees并编写了以下脚本来对所有数据库执行 select 语句:
IF OBJECT_ID('tempdb..#tmp') IS NOT NULL
DROP TABLE #tmp
select * into #tmp from Database1.dbo.Table1 where 1=0
DECLARE @statement nvarchar(max) =
N'insert into #tmp select * from Table1 where Column1=0 and Cloumn2 =1'
DECLARE @LastDatabaseID INT
SET @LastDatabaseID = 0
DECLARE @DatabaseNameToHandle varchar(60)
DECLARE @DatabaseIDToHandle int
SELECT TOP 1 @DatabaseNameToHandle = Name,
@DatabaseIDToHandle = Database_Ref_No
FROM Databasees
WHERE Database_Ref_No > @LastDatabaseID
ORDER BY Database_Ref_No
WHILE @DatabaseIDToHandle …Run Code Online (Sandbox Code Playgroud) 我有一台带有 SSMS Express 2012 的开发笔记本电脑,带有一个 2012 db 实例和一个 2008 db 实例。使用这个配置已经一年多了。突然间我无法使用还原向导。向导将选择备份文件,但是当我选择左上角的“文件”选项以指定 MDF 和 LDF 的位置时,对话框会挂起。我尝试了修复,没有运气。
我的 SQL Server 实例的 (SQL Server 2008 R2 Express) 服务具有启动类型 = 自动。过去几次我重新启动计算机时,该服务无法自行启动,但是当我手动启动该服务时它启动得很好。
事件查看器显示服务由于连接超时而无法启动。关于此超时有 2 个条目:
条目 1
等待 SQL Server (SQLEXPRESS) 服务连接时超时(30000 毫秒)。
条目 2
由于以下错误,SQL Server (SQLEXPRESS) 服务无法启动:该服务没有及时响应启动或控制请求。
我检查了 ERRORLOG 文件,在这些事件查看器条目的时间附近没有记录任何错误。
关于此问题的原因或我如何进一步调查的任何想法?
查看特定登录的属性时,可以看到映射到该登录的用户列表:

我分析了 SQL Server Management Studio (SSMS),我看到 SSMS 一次连接到每个数据库并从 sys.database_permissions 检索信息
是否可以编写一个查询来检索上面显示的用户映射信息,或者我是否被迫使用游标或 sp_MSforeachdb 或类似的东西?
一个INSERT INTO脚本编写如下。
INSERT INTO tableName (Column1, Column2,....) VALUES (value1, Value2,...), (value1, Value2,...),....
Run Code Online (Sandbox Code Playgroud)
以下是我们在解析上面的插入语句时面临的错误
消息 10738,级别 15,状态 1,第 1007 行 INSERT 语句中的行值表达式的数量超过了 1000 个行值的最大允许数量。
我的简单问题是,我们可以更改 1000 个值限制吗?
出于安全原因,我们在windows上禁用了TLS 1.0和旧协议,在以下注册表路径下只启用了TLS 1.1和TLS 1.2:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols 之后,SQL服务赢了'不以以下错误开头:
2015-02-13 17:35:10.12 spid13s The server could not load the certificate it needs to initiate an SSL connection. It returned the following error: 0x80090331. Check certificates to make sure they are valid.
2015-02-13 17:35:10.12 spid13s Error: 26014, Severity: 16, State: 1.
2015-02-13 17:35:10.12 spid13s Unable to load user-specified certificate [Cert Hash(sha1) "9B49E2FB65EE880F7C8818A90187F572566C9213"]. The server will not accept a connection. You should verify that the certificate is correctly installed. See "Configuring Certificate for Use by SSL" in …Run Code Online (Sandbox Code Playgroud) 我有一个很大的查询(如有必要,我会在此处发布)并且出现此错误:
消息 6841,级别 16,状态 1,第 1 行
FOR XML 无法序列化节点“NoName”的数据,因为它包含 XML 中不允许的字符 (0x0000)。要使用 FOR XML 检索此数据,请将其转换为 binary、varbinary 或 image 数据类型并使用 BINARY BASE64 指令。
我唯一使用的部分FOR XML在这里:
WHERE
(CodFuncionario = Results.CodFuncionario)
FOR XML PATH(''), TYPE).value('(./text())[1]',
'VARCHAR(MAX)'), 1, 2, '') AS [Experiencia]
Run Code Online (Sandbox Code Playgroud)
但是,什么是node noname?以及如何查找此值:(0x0000)
这是子查询之一(我拥有 FOR XML 的唯一部分):
SELECT
[CodFuncionario],
STUFF
(
(
SELECT
' / ' +
CAST
(
[DescFuncao] + '-' +
[DescTempoExperiencia]
AS VARCHAR(MAX)
)...
FROM
[Linked_Server].db.dbo.tblFuncionarioExperiencia T0
INNER JOIN
[Linked_Server].db.dbo.tblFuncao T1 On T0.codFuncao = …Run Code Online (Sandbox Code Playgroud) sql-server ×10
t-sql ×2
dmv ×1
dynamic-sql ×1
encryption ×1
errors ×1
identity ×1
logins ×1
permissions ×1
security ×1
ssl ×1
xml ×1