我正在尝试通过存储过程运行SSIS程序包,但是Access is denied在尝试导入CSV时出现错误。
我将程序包放入工作中并运行,只要使用代理帐户,它就可以正常工作。我尝试不使用将代理帐户复制到存储过程调用xp_cmdshell。我还在Visual Studio中运行了该程序包,并且运行顺利。
我的SSIS包很简单:它从网络导入CSV文件,将数据转换为varchar,然后将数据存储到表中。
甚至我的系统管理员也无法成功运行存储过程。
我的存储过程如下所示:
ALTER PROCEDURE [dbo].[spImportFile]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @execution_id bigint
EXEC SSISDB.CATALOG.create_execution
@folder_name = 'folder_name',
@project_name = 'project_name',
@package_name = 'package_name.dtsx',
@use32bitruntime = 1,
@execution_id = @execution_id output
EXEC SSISDB.CATALOG.start_execution @execution_id
END
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何在不使用此存储过程的情况下以编程方式使用代理用户xp_cmdshell?
更新:
我现在想模拟我的代理用户,这要感谢billinkc,但是现在我在执行SSIS包时遇到了这个错误:
当前的安全上下文无法还原。请切换到调用“ Execute As”的原始数据库,然后重试。
这是我修改后的代码:
ALTER PROCEDURE [dbo].[spImportFile]
AS …Run Code Online (Sandbox Code Playgroud) sql-server impersonation ssis stored-procedures sql-server-2014
我搜索了但是没有找到我错误的解决方案.
我正在使用VS 2013和SQL Server 2014.
以下是我的连接字符串:
using (SqlConnection sqlConnection = new SqlConnection("cnInvestTracker"))
{
}
Run Code Online (Sandbox Code Playgroud)
我的web.config是:
<connectionStrings>
<add name="cnInvestTracker"
connectionString="Data Source=localhost;Initial Catalog=InvestTracker;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
当代码执行using行时,我收到一条错误消息.错误消息是:
初始化字符串的格式不符合从索引0开始的规范.
是什么导致错误?
我有 SQL Server 2014,我正在尝试通过 URL 访问来访问我的报告。据我了解,Excel 格式应该给我一个支持无限行数的 XLSX 文件。但是,在查看我的日志文件后,我注意到对于超过 65536 行的任何报告,我得到了最大的行错误。在调查之后,我发现任何时候我通过 URL 请求格式为 EXCEL 的报告时,它们都会生成一个 XLS 文件而不是 XLSX。如果我从 Visual Studio 中运行报告并导出为 EXCEL,它们生成的结果就像 XLSX。任何人都知道如何解决这个问题?
我已经在本地 Windows 服务器上安装了 SQL Server Enterprise 版本,现在我需要帮助来启用 MSDTC 服务。
我已联系 Microsoft 帮助,但他们需要很长时间才能回复。
我在开发环境中有全文搜索索引。它包含要索引的表的数据以及为全文索引选择的列。我是通过管理工作室查看的。
我需要在接受环境中更新索引的选定列。我可以为此目的生成脚本吗?
我尝试通过进入“存储”>在“全文目录”下>右键单击索引>选择“脚本目录为”>选择“删除并创建到”来生成索引脚本。但是它给出了一个非常基本的脚本,我需要在索引中关联的表的列不是在脚本中生成的。我得到的脚本如下:
DROP FULLTEXT CATALOG [MYTABLE]
GO
CREATE FULLTEXT CATALOG [MYTABLE]WITH ACCENT_SENSITIVITY = OFF
GO
Run Code Online (Sandbox Code Playgroud)
但我需要的是更改索引中表的选定列。
我有一张像这样的桌子:
create table tbl (
id int,
data image
)
Run Code Online (Sandbox Code Playgroud)
发现该列的data尺寸很小,可以存储在varbinary(200)
因此,新表将是
create table tbl (
id int,
data varbinary(200)
)
Run Code Online (Sandbox Code Playgroud)
如何在不丢失表中数据的情况下将该表迁移到新设计。
我有一个带有一些值的项目表,其中包括成本和购买日期.我正在尝试获取最昂贵物品的清单,每种物品类型一个,按特定物品的购买日期排序,没有结果中购买日期.
我的桌子(简化):
CREATE TABLE Purchases
(ItemType varchar(25),
Cost int,
PurchaseDate smalldatetime)
Run Code Online (Sandbox Code Playgroud)
我的样本数据:
INSERT INTO Purchases VALUES
('Hat', 0, '2007-05-20 15:22'),
('Hat', 0, '2007-07-01 15:00'),
('Shirt', 3500, '2007-07-30 08:43'),
('Pants', 2000, '2008-07-30 12:00'),
('Pants', 4000, '2009-03-15 07:30'),
('Sweater', 3000, '2011-05-20 15:22'),
('Sweater', 3750, '2012-07-01 22:00'),
('Sweater', 2700, '2014-06-12 11:00'),
('Hat', 4700, '2015-06-29 07:10')
Run Code Online (Sandbox Code Playgroud)
我的预期输出(为清晰起见添加日期):
ItemType MostExpensivePerType
------------------------- --------------------
Shirt 3500 (2007-07-30 08:43)
Pants 4000 (2009-03-15 07:30)
Sweater 3750 (2012-07-01 22:00)
Hat 4700 (2015-06-29 07:10)
Run Code Online (Sandbox Code Playgroud)
到目前为止我的工作:
我来回尝试过,我最好的结果就是这个查询:
SELECT
ItemType, MAX(Cost) …Run Code Online (Sandbox Code Playgroud) 我的问题是:
我有2个表:Employees(它有FirstName,LastName和EmployeeId列)和ProjectWorkers(它具有FullName和WorkerId列).
WorkerId是EmployeeId这样我需要填充ProjectWorkers.FullName来自Employees.FirstName和LastName数据的连接数据(根据WorkerId=EmployeeId).
我写了一个查询,补FullName列,但只FirstNames,但我不明白如何加入FirstName和FullName(它必须是简单的,但它是我的问题).
我的查询:
USE [HRM_MVC_DEV_Test]
GO
UPDATE [dbo].[ProjectWorkers] set
FullName = FirstName
FROM [dbo].[Employees] as e
INNER JOIN [dbo].[ProjectWorkers] as p
ON e.EmployeeId = p.WorkerId
GO
Run Code Online (Sandbox Code Playgroud)
Ps感谢格式化文本,下次我会尝试自己做
我正在使用Select * Into #temp from SomeChangingSource存储过程在运行中创建临时表.然后我需要列出结果列.
对常规(永久)表执行此操作非常简单:
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='TableName'
Run Code Online (Sandbox Code Playgroud)
如何处理临时表?
我在SQL Server 2014 Management Studio中工作.
不确定如何解释这个,但最好是我只是用一个例子来解释.
所以我想出了如何获得下一个最低ID,这很简单.但是一旦我得到那一行,我需要从中获取值并将其应用到下一个最高值.
如果我有4行
ID value
-------------
10 50
30 200
20 75
25 100
Run Code Online (Sandbox Code Playgroud)
我想获取每一行的值并应用具有下一个最高ID的行.所以看起来应该是这样的.
ID value
-------------
10 null or 0
30 100
20 50
25 75
Run Code Online (Sandbox Code Playgroud)
由于10 ID之前没有行,该行的值应为null或0,无关紧要.其他人应该遵循从具有下一个最低ID的行中获取值的模式.
sql-server-2014 ×10
sql-server ×7
sql ×5
t-sql ×3
alter-table ×1
asp.net ×1
c# ×1
excel ×1
sql-update ×1
ssis ×1
ssms ×1