有关如何以编程方式从SQL Server 2005获取完全相同的存储过程源的任何指针,就像我在SQL Server Management Studio中右键单击该存储过程并选择修改一样?
我正在尝试使用SMO,但存在一些文本差异.该过程始终具有CREATE,而不是ALTER,并且标头中存在一些差异,例如在我以编程方式获取的版本中缺少GO.我可以解决这些问题,但也许还有更好的方法吗?
我再次使用SMSE在SQL Server 2005中.通过Visual Studio 8 2008使用SMO.
更新:得到一些答案,告诉我们如何检索存储过程的基础知识.我正在寻找的是检索与GUI生成的文本相同(或几乎相同)的文本.
示例:对于sp_mysp,在Management Studio中单击鼠标右键,选择"修改".这会产生:
USE [MY_DB]
GO
/****** Object: StoredProcedure [dbo].[sp_mysp] Script Date: 01/21/2009 17:43:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[sp_mysp]
我想以编程方式获得相同的东西(注意标题中的GO,以及它是一个更改程序的事实.理想情况下,我希望通过最小程序修复所检索的源来实现此目的.
我很乐意在Script Date细节中得到不同的东西...
我下载了SQL Server 2008,似乎无法在任何地方找到SQL Profiler.
我相信我安装了SQL Server Enterprise Express /试用版?
我想这毕竟是Express而不是Enterprise?
如果我可以选择使用.Net并且可以在.Net中进行数据转换,我何时需要SSIS?是否有一项SSIS会更好的任务?透明度的额外好处值得吗?这是我更舒服的吗?确定这个的最佳做法是什么?
是否可以使用这样的文字扩展查询结果?
select name from users
union
select name from ('JASON');
Run Code Online (Sandbox Code Playgroud)
要么
select age, name from users
union
select age, name from (25,'Betty');
Run Code Online (Sandbox Code Playgroud)
所以它返回表中的所有名称加'JASON'或(25,'Betty').
版本控制数据库对象的最佳方法是什么?我正在使用Visual Studio 2005/2008和SQL server 2005.我更喜欢可以与SVN一起使用的解决方案.
svn sql-server version-control stored-procedures visual-studio
不久之前,我有一个查询,我为我的一个用户运行了很多.它仍然在进化和调整,但最终它稳定并且运行得非常快,所以我们从中创建了一个存储过程.
到目前为止,这是正常的.
但是,存储过程很慢.查询和proc之间没有实质性差异,但速度变化很大.
[后台,我们正在运行SQL Server 2005.]
友好的本地DBA(不再在这里工作)看了一下存储过程并说"参数欺骗!" (编辑:虽然它似乎也可能被称为'参数嗅探',这可能解释了当我试图搜索它时谷歌的点击率很低.)
我们将一些存储过程抽象到第二个存储过程,将对这个新内部过程的调用包装到预先存在的外部过程中,称为外层过程,嘿,它与原始查询一样快.
那么,是什么给出的?有人可以解释参数欺骗吗?
奖金积分
我将选择列表中的列添加到按顺序列表中,但它仍然给出了错误:
如果指定了SELECT DISTINCT,则ORDER BY项必须出现在选择列表中.
这是存储过程:
CREATE PROCEDURE [dbo].[GetRadioServiceCodesINGroup]
@RadioServiceGroup nvarchar(1000) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT rsc.RadioServiceCodeId,
rsc.RadioServiceCode + ' - ' + rsc.RadioService as RadioService
FROM sbi_l_radioservicecodes rsc
INNER JOIN sbi_l_radioservicecodegroups rscg
ON rsc.radioservicecodeid = rscg.radioservicecodeid
WHERE rscg.radioservicegroupid IN
(select val from dbo.fnParseArray(@RadioServiceGroup,','))
OR @RadioServiceGroup IS NULL
ORDER BY rsc.RadioServiceCode,rsc.RadioServiceCodeId,rsc.RadioService
END
Run Code Online (Sandbox Code Playgroud) 我有一个Excel电子表格,我想将选择列导入我的SQL Server 2008数据库表.该向导没有提供该选项.
是否存在任何简单的代码选项?
我想将一些SQL Server 2005数据导出为CSV格式(用逗号分隔引号).我可以想到很多复杂的方法,但我想以正确的方式做到这一点.我看过bcp,但我无法弄清楚如何在字段周围添加引号(除了将它们连接到字段值,这很难看).我想我可以用sqlcmd和-o做到这一点,但出于同样的原因,这似乎很难看.
有没有bcp方式来做到这一点?
有合理的sqlcmd方法吗?
管理工作室内置了一些非常简单的实用工具吗?