Questions tagged «sql-server-2008»

SQL Server 2008(主要版本10.00.xxxx)。请同时用sql-server标记。


2
为什么我不能通过SQL-SERVER 2008链接服务器读取Oracles CLOB列?
我想从SQL-Server 2008访问Oracle 11g数据库中的数据 我设置了链接服务器,执行时 select * from [Link_server_name]..Oracle_schema.Oracle_table 和Oracle_table包含Number和varchar2列,所有工作均例外。 但是,当Oracle_table包含CLOB列时,出现以下错误: OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'的帽子被Meldung'Unspecified error'破坏了。 'OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'已死于Meldung'发生Oracle错误,但无法从Oracle检索错误消息。祖鲁格本。 '从OLE DB-Anbieter'MSDAORA'中删除文件'L_V407SR8T',在Meldung中'不支持数据类型。祖鲁格本。 消息7306,第16级,状态2,第1行 死于“ MCCAPP”。 使用OPENQUERY SELECT * FROM OPENQUERY([L_V407SR8T], 'Select CLOB_COLUMN from Oracle_table' ) 我懂了 'OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'已死于Meldung'发生Oracle错误,但无法从Oracle检索错误消息。祖鲁格本。'从OLE DB-Anbieter'MSDAORA'中删除文件'L_V407SR8T',在Meldung中'不支持数据类型。祖鲁格本。 请原谅德语错误消息。 我的问题:是否可以通过链接的服务器读取CLOB列? 编辑: SQL Server导入和导出向导似乎也依赖OLE DB,并且在同一张表上很烂 我问自己,问题是否取决于字符集使用,但是我无法更改它们 在实际工作中,我使用一些PowerShell脚本来获取数据,但是


1
在数据库项目中将链接服务器与OPENQUERY一起使用
我有一个SQL Server 2008,运行一个我想放入TFS的数据库。因此,我在导入数据库的地方使用了Visual Studio 2013数据库项目。修复了一堆错误之后,我只剩下一个错误: 在一个视图中,开发人员用来OPENQUERY访问链接服务器。因此,我导入了包含正确数据库的DACPAC,并Add Database Reference使用以下参考选项将其添加到项目中。 初始脚本版本 这是原始视图创建的简短版本: CREATE VIEW dbo.vwStatus AS SELECT StatusID, StatusName FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 这导致以下错误: 错误136 SQL71501:视图:[dbo]。[vwStatus]具有对对象[LinkedServer]的未解析的引用。 第一次尝试 所以我试图插入服务器名称变量 FROM OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 这导致 错误176 SQL46010:$(LinkedServer)附近的语法不正确。 进一步尝试 我摆弄了arround并尝试了以下操作(启用和不启用引用标识符): FROM OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS …

2
如何将分钟添加到时间数据类型?
我有一个存储过程,该过程将两个记录插入到一​​个表中,记录之间的区别是第二个记录的时间列在第一个记录@MinToAdd之后: CREATE PROCEDURE CreateEntry /*Other columns*/ @StartTime time(2), @EndTime time(2), @MinutesToAdd smallint AS BEGIN SET NOCOUNT ON; SET @MinutesToAdd = @MinutesToAdd % 1440; --Prevent overflow if needed? IF (@MinutesToAdd > 0) BEGIN INSERT INTO ClientNotification (/*Other columns*/ startTime, endTime) OUTPUT inserted.id VALUES (/*Other columns*/ @StartTime, @EndTime), (/*Other columns*/ @StartTime + …

3
用户无法在SSMS中以非默认模式查看表
我在VIEW DEFINITION为一个用户的架构级别适当设置权限时遇到问题。我已经创建了架构TestSchema并添加了一些表。用户目前有权限设置为访问和修改表(SELECT,UPDATE,DELETE通过等)dbo_datareader和dbo_datawriter角色。但是,他们看不到SSMS对象资源管理器中的任何表。 我尝试授予查看定义的权限: grant view definition on SCHEMA :: [TestSchema] to [User] 那没用。我尝试设置表级权限: grant view definition on [TestSchema].[NewTable] to [User] 那也没有用。然后,我尝试了一项总括性赠款: grant view definition to [User] 那确实奏效了;他们现在可以看到TestSchema以及他们不应该访问的其他模式。 我的目标是允许用户查看给定架构中的所有表。我该怎么做?如果默认情况下我应该能够执行此操作,那么我应该查看哪些权限以查找为什么不能这样做?

1
配置文件死锁报告中的“ * password ------------”是什么意思?
在SQL Server 2008 R2中,我得到了几个死锁报告,它们在输入缓冲区中具有“ * password ------------”。它看起来像是攻击,但在那种情况下,我不知道攻击的原因或类型。 (该日志是由专家DBA生成的,他有很多经验,并告诉我,不是我) 有谁知道它是什么?谢谢! 例: <?xml version="1.0"?> <blocked-process> <process id="process879948" taskpriority="0" logused="0" waitresource="KEY: 5:72057602473263104 (1d69201d0ba6)" waittime="5185" ownerId="88389135" transactionname="SELECT" lasttranstarted="2012-09-25T18:11:02.507" XDES="0x1f7d2a590" lockMode="S" schedulerid="2" kpid="4552" status="suspended" spid="86" sbid="2" ecid="0" priority="0" trancount="0" lastbatchstarted="2012-09-25T18:11:02.507" lastbatchcompleted="2012-09-25T18:11:02.507" lastattention="2012-09-25T18:07:35.740" clientapp=".Net SqlClient Data Provider" hostname="IP-xxxxxxxx" hostpid="4868" loginname="sa" isolationlevel="read committed (2)" xactid="88389135" currentdb="1" lockTimeout="4294967295" …

6
具有层次结构的表:创建约束以防止通过外键实现圆度
假设我们有一个对其自身具有外键约束的表,如下所示: CREATE TABLE Foo (FooId BIGINT PRIMARY KEY, ParentFooId BIGINT, FOREIGN KEY([ParentFooId]) REFERENCES Foo ([FooId]) ) INSERT INTO Foo (FooId, ParentFooId) VALUES (1, NULL), (2, 1), (3, 2) UPDATE Foo SET ParentFooId = 3 WHERE FooId = 1 该表将具有以下记录: FooId ParentFooId ----- ----------- 1 3 2 1 3 2 在某些情况下,这种设计可能是有道理的(例如,典型的“雇员与老板-雇员”关系),无论如何:在我的方案中有这种情况。 …

1
将加密的数据库还原到另一台服务器
我正在使用在SQLServer 2008上运行的产品。可以理解的是,提供该产品的公司不提供SQLServer支持。安装产品时,我指定了密码来加密数据库。我想运行该产品的另一个副本,以便在另一台服务器上进行测试。我已将数据库还原到另一台服务器,并将产品安装在另一台服务器上。安装后,我提供了相同的密码,然后从主服务器还原了备份。但是我收到错误消息: System.Data.SqlClient.SqlException: An error occurred during decryption. 从产品。我可以使用SQLServer Management Studio访问表。 我已经试过了: 在第一台服务器上: CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff' BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat' WITH PRIVATE KEY ( ENCRYPTION BY PASSWORD = 'mypassword', FILE = 'd:\backup\cert1_privatekey.dat' ) 在第二台服务器上: CREATE MASTER KEY ENCRYPTION BY PASSWORD …

4
SQL Server从另一个数据库重命名表
SQL Server中是否可以重命名另一个数据库中的表?在当前数据库中并将数据迁移到TEMP表中的另一个数据库,然后在该另一个数据库中重命名TEMP表时。我不想使用“ USE [database]”,因为数据库名称可能会在其他服务器上更改。 我在这里先向您的帮助表示感谢!

4
在LIKE运算子中选择多个值
我在下面给出了一个SQL查询,我想使用like运算符选择多个值。 我的查询正确吗? SELECT top 1 employee_id, employee_ident, utc_dt, rx_dt FROM employee INNER JOIN employee_mdata_history ON employee.ident=employee_mdata_history.employee_ident WHERE employee_id like 'emp1%' , 'emp3%' ORDER BY rx_dt desc 如果没有,谁能纠正我? 我的表格包含大量以'emp1'和开头的数据'emp3'。我可以基于前3个“ emp1”和前2个“ emp3”过滤结果rx_dt吗?

1
如果NOT NULL,则UPDATE,否则保留字段的值
我认为以某种方式可以使它正常工作,但是由于某些原因,我仍然会出错。 我有以下UPDATE查询: UPDATE DeviceAttribute SET Details = CASE Name WHEN 'Accessories' THEN @Accessories WHEN 'Description' THEN @Description WHEN 'Specification' THEN @Specification ELSE Details END WHERE DeviceID = 10 参数由不同的用户填写。我现在面临的问题是,即使您要更新单个字段,也仍然必须用旧数据填写其他参数。因此,我想设置选项IF @parameter IS NULL然后保留已经存储在数据库中的值。我试图找到一些解决方案,类似以下查询的内容似乎是解决方案,但无法使其正常工作: UPDATE DeviceAttribute SET Details = CASE Name WHEN 'Accessories' IS NOT NULL THEN @Accessories WHEN 'Description' IS NOT …

1
夏令时
在我的环境中,有一些服务器在本机备份和Ola Hallengren计划上运行。我们的服务器是2008年,2012年和2014年的组合。所有完整备份均在凌晨12点进行,日志备份每15分钟进行一次。 我以前从未考虑过夏令时,因此请告诉我应该进行哪些调整。 凌晨12点的完整备份会受到影响吗?日志备份会怎样?

1
我们是否仍应使用QUOTENAME防止注入攻击?
我今天正在看一个旧的存储过程,发现它quotename在输入参数上使用了。经过一番挖掘以找出确切的功能后,我遇到了这个站点。我现在了解它的作用以及如何使用它,但是该网站称它被用作SQL注入攻击的缓解措施。当我过去使用asp.net开发直接查询数据库的应用程序时,我会使用ADO.Net参数将用户输入作为文字值传递,而从不真正担心在存储过程中对其进行保护。 我现在正在编写一个存储过程,该存储过程将由我不编写的应用程序使用,因此我需要在过程级别尝试防止注入攻击,这是quotename最好的方法,或者是否有更新的功能/更好的方法方法? 使我了解这种思维模式的代码(@parm1是用户输入参数): 'SELECT project [Project], project_desc [Description], customer [Customer], cpnyid [Company] FROM PJPROJ (nolock) where project like ' + quotename(@parm1,'''') + '

2
SQL Server相当于Oracle USING INDEX子句
在Oracle中是否有与USING INDEX子句等效的SQL Server 2008?专门针对构造: CREATE TABLE c(c1 INT, c2 INT); CREATE INDEX ci ON c (c1, c2); ALTER TABLE c ADD CONSTRAINT cpk PRIMARY KEY (c1) USING INDEX ci; 在有关唯一索引的Sql Server 文档中,它指出了(强调): 唯一索引通过以下方式实现: 主键或唯一约束 创建PRIMARY KEY约束时,如果表上的聚簇索引尚不存在并且未指定唯一的非聚簇索引,则会在一个或多个列上自动创建一个唯一的聚簇索引。主键列不能使用NULL值。 这似乎暗示着有一种方法可以指定应将哪个索引用于主键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.