标签: sql-server-2008-r2

SQL Server 2008 R2 DMV - sys.dm_sql_referencing_entities - 查询用法

我正在尝试使用 DMV 获取表列表的所有依赖项sys.dm_sql_referencing_entities

这个查询给了我所有表的列表:

SELECT TableName from FinalTableList;  
Run Code Online (Sandbox Code Playgroud)

此查询给出 TableA 的依赖关系:

SELECT  referencing_entity_name
FROM sys.dm_sql_referencing_entities ('dbo.TableA', 'OBJECT') ;  
Run Code Online (Sandbox Code Playgroud)

我想将上述 2 项合并到一个查询或过程中,以便我可以获得以下格式的所有依赖项:

TableA  Dependency1
        Dependency2
        Dependency3
TableB  Dependency1
        Dependency2
...................
Run Code Online (Sandbox Code Playgroud)

应该如何构建查询?

sql dependencies sql-server-2008-r2 dmv

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

从 SSIS 脚本任务/脚本组件返回输出参数或变量

是否可以从使用 xp_cmdshell 的存储过程调用的 SSIS“脚本任务”返回输出参数?

到目前为止我找到的所有示例都显示了如何为 dts 包变量等赋值;并通过消息框显示它们,但我看到的每个示例都显示脚本任务仅返回 Dts.TaskResult = (int)ScriptResults.Success; 或 Dts.TaskResult = (int)ScriptResults.Failure ...

基本上,我有一个脚本任务,它从按预期工作的 dll 调用中获取多个值;值通过消息框进行验证;但我无法找出如何将它们返回到最初执行 SSIS 包的存储过程。

我错过了一些明显的东西吗?请提供功能代码示例和控制流/数据流等的屏幕截图,说明如何端到端执行此操作... EG:从存储过程 - >执行 *.dtsx 包,向其传递参数,包括输出参数;以及同一存储过程如何在此类调用中读取这些输出参数;当结果返回时...

提前致谢。

ssis xp-cmdshell sql-server-2008-r2

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

在 SQL Server 中的同一列上创建多个非聚集索引

指数创建策略是什么?

是否可以在 SQL Server 中的同一列上创建多个非聚集索引?

在同一列上创建集群和非集群怎么样?

非常抱歉,但索引对我来说非常混乱。

有什么方法可以找出 SQL Server 中的估计查询执行时间吗?

sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2 sql-server-2012

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

IDENTITY_INSERT ON 不起作用 - SQL Server 2008 R2

我的查询遇到问题。基本上,我想做的是清空一个表,然后从另一个数据库中的同一个表中复制记录。

我确实使用SET IDENTITY_INSERT代码来确保在执行插入之前关闭标识列。但不知何故,它仍然向我抛出错误消息:

消息 8101,级别 16,状态 1,第 3 行
仅当使用列列表且 IDENTITY_INSERT 为 ON 时,才能指定表“dbo.UI_PAGE”中标识列的显式值。

以下是我的查询:

DELETE FROM [DB1].[dbo].[MY_TABLE] 

SET IDENTITY_INSERT [DB1].[dbo].[MY_TABLE] ON

INSERT INTO [DB1].[dbo].[MY_TABLE]
   SELECT *
   FROM  [DB2].[dbo].[MY_TABLE]

SET  IDENTITY_INSERT [DB1].[dbo].[MY_TABLE] OFF
Run Code Online (Sandbox Code Playgroud)

有人能指出我哪一步做错了吗?

多谢!

identity identity-column sql-server-2008-r2

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

将 dbo 设置为所有新表的默认架构

我在四个不同的生产服务器上安装了一个数据库。每个服务器都有自己不同的用户。当我在这些服务器上使用 create 语句创建新表时,每个服务器都会设置/前置其用户名,例如

Create Table tab_1 ...
abc.tab_1在 server_1 上使用abcas 登录名
def.tab_1在 server_2 上使用defas 登录名
ghi.tab_1在 server_3 上使用ghias 登录名
jkl.tab_1在 server_4 上使用jklas 登录名

我想用作dbo默认架构,并且必须在每台服务器上为每个新表使用以下语句

ALTER SCHEMA dbo TRANSFER login.table_name;
Run Code Online (Sandbox Code Playgroud)

有没有办法修改Create Table在所有服务器上创建每个表的语句或其他设置dbo.table_name

我正在使用共享托管,并且 SSMS 中有很多限制,因此基于查询的解决方案是合适的。

sql-server schema owner create-table sql-server-2008-r2

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

重用具有不同参数值的 SQL Server 游标?

我想知道当值发生变化时,带参数查询的游标@variable是否可以重新使用(CLOSE+ ) 。在我看来,它总是需要+ + +才能使新值生效。也许没什么大不了的,但我想知道在使用之间是否可以省略+ 。OPEN@variableCLOSEDEALLOCATEDECLAREOPEN@variableDEALLOCATEDECLARE

这里有完整的简单示例供您尝试:

DECLARE @ta TABLE (a int);
INSERT INTO @ta (a) VALUES (1),(2),(4),(8),(16),(32),(64);
---------
DECLARE @current_a int;
DECLARE @threshold int = 12;
DECLARE crs1 CURSOR FOR SELECT a FROM @ta WHERE a < @threshold;

--- first cursor use
OPEN crs1;

    FETCH NEXT FROM crs1 INTO @current_a;
    WHILE @@FETCH_STATUS = 0
        BEGIN
            SELECT @threshold, @current_a
            FETCH NEXT FROM crs1 INTO …
Run Code Online (Sandbox Code Playgroud)

sql-server cursor sql-server-2008-r2

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

查找以 GUID 作为名称的表

我有一些表,GUID其名称是生成的。

例如:

我的表名称为:

FD962987-AA3E-441C-B608-2392B68A5287

508482AF-EFCF-41C1-B083-D51BF37C3590
Run Code Online (Sandbox Code Playgroud)

数据库中还有一些其他表。

我只想找到名称为 的表GUID

我的尝试:

SELECT name 
FROM sys.tables 
WHERE LEN(tables.name) = 36 
Run Code Online (Sandbox Code Playgroud)

上面的查询工作正常,但是当我有其他表(不是 GUID 名称)时,会显示具有相同长度的表名。

sql-server sql-server-2008-r2

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

创建非聚簇PK语法是否不一致?

SQL Server 2008 R2

为什么

create table A
(
   id int,
   primary key nonclustered (id)
)
Run Code Online (Sandbox Code Playgroud)

是正确的,执行没有错误?

create table A
(
   id int,
   primary key nonclustered id
)
Run Code Online (Sandbox Code Playgroud)

是错误的?给

')'附近的语法不正确.

附带问题:
为什么

create table c(id int primary key clustered)  
Run Code Online (Sandbox Code Playgroud)

被执行
但是

create table c(id int primary key nonclustered)
Run Code Online (Sandbox Code Playgroud)

是错误的?对不起,两个都有效.

是否建议纠正语法不一致?

t-sql sql-server primary-key sql-server-2008-r2 non-clustered-index

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

如何使用T-SQL调用exec(@sql)来更改当前数据库?

可能重复:
在SQL Server中有任何方法可以使用'use database'命令来接受变量

我们可以通过他们的名字更改数据库没问题如下

USE master
GO
Run Code Online (Sandbox Code Playgroud)

但是我需要在脚本中使用它并在变量中包含数据库名称.怎么做到这个?

select @cmd = N'use ' + @oldDb  + N';'
exec sp_executesql @cmd
Run Code Online (Sandbox Code Playgroud)

这不起作用 - 当前数据库在执行后保持不变.

有可能吗?

t-sql database sql-server-2008-r2

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

每个架构的SQL Server还原和备份

可能重复:
SQL Server 2005仅还原一个架构

我有一个包含几个SQL Server 2008 R2中的架构的数据库。所有模式都包含相同的表。现在,我希望能够仅还原一个模式的备份,而其他模式保持原样。

我正在寻找等同于pg_restore --schema="schemaname"在PostgreSQL中使用的东西。有什么办法可以在SQL Server中做到这一点?

database sql-server database-backups sql-server-2008-r2 database-schema

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