相关疑难解决方法(0)

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

SSMS结果到网格 - 复制/粘贴中没有保留CRLF - 任何更好的技术?

当我在网格中有结果集时,如:

SELECT 'line 1
line 2
line 3'
Run Code Online (Sandbox Code Playgroud)

要么

SELECT 'line 1' + CHAR(13) + CHAR(10) + 'line 2' + CHAR(13) + CHAR(10) + 'line 3'
Run Code Online (Sandbox Code Playgroud)

使用嵌入式CRLF,网格中的显示似乎用空格替换它们(我猜它们将显示所有数据).

问题是,如果我是代码生成脚本,我不能简单地剪切和粘贴它.我必须转换代码以打开游标并打印相关列,以便我可以从文本结果中复制和粘贴它们.

是否有更简单的解决方法来保留结果网格中的复制/粘贴操作中的CRLF?

网格有用的原因是我正在为不同列中的同一对象生成许多脚本 - 一列中的bcp,另一列中的xml格式文件,另一列中的表创建脚本等等...

sql-server formatting ssms

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

如何在SQL Server数据库中列出用户定义的类型?

我需要枚举在SQL Server数据库中创建的所有用户定义类型CREATE TYPE,和/或找出它们是否已经定义.

使用表或存储过程,我会做这样的事情:

if exists (select * from dbo.sysobjects where name='foobar' and xtype='U')
    drop table foobar
Run Code Online (Sandbox Code Playgroud)

但是我找不到用户定义类型的等价物(或合适的替代品)!我绝对不能在任何地方看到它们sysobjects.

任何人都可以开导我吗?

sql t-sql sql-server

32
推荐指数
3
解决办法
5万
查看次数

无法在sql server中更改我的自定义类型

我有一个我使用以下创建的自定义类型:

IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'LineItemType')
BEGIN
    DROP TYPE dbo.LineItemType
END
GO

CREATE TYPE dbo.LineItemType
AS TABLE
(
  Id UNIQUEIDENTIFIER,
  Invoice_Id UNIQUEIDENTIFIER,
  Cost INT,
  Quantity INT,
  Total INT,
  [Description] NVARCHAR(250) 
);
GO
Run Code Online (Sandbox Code Playgroud)

此类型用作我的一个存储过程的参数,如下所示:

IF EXISTS (SELECT 1 FROM sys.procedures WHERE name = 'AddSomething' AND SCHEMA_NAME(schema_id) = 'dbo')
BEGIN
    DROP PROCEDURE dbo.AddSomething
END
GO

CREATE PROCEDURE AddSomething
    ...
    @LineItems AS dbo.LineItemType READONLY

AS
BEGIN 
    ...
Run Code Online (Sandbox Code Playgroud)

我的问题是我已经决定在我的类型中添加一些列,我在上面添加了列更新了我的脚本,并且期望它在我运行时简单地删除并重新创建但是我得到了这个错误:

消息3732,级别16,状态1,行4不能删除类型'dbo.LineItemType',因为它正被对象'AddSomething'引用.可能有其他对象引用此类型.消息219,级别16,状态1,行8类型'dbo.LineItemType'已存在,或者您无权创建它.

我错过了什么?我怎样才能删除我的类型并随时重新创建它?

谢谢.

sql sql-server

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

无法修改用户定义的表类型

我有一个 SQL User-Defined Table Type。它用于许多存储过程。现在我需要更改该表类型中的一列。我试图删除并重新创建User-Defined Table Type. 但 SQL Server 不允许这样做。它显示以下错误。

Msg 3732, Level 16, State 1, Line 3
Cannot drop type 'dbo.UserDefinedTableType' because it is being referenced by object 'SP_DoSomething'. There may be other objects that reference this type.
Msg 219, Level 16, State 1, Line 3
The type 'dbo.UserDefinedTableType' already exists, or you do not have permission to create it.
Run Code Online (Sandbox Code Playgroud)

如何在User-Defined Table Type不修改所有使用的存储过程的情况下更改User-Defined Table Type

sql sql-server stored-procedures user-defined-types sql-server-2012

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