有没有一种简单的方法从SQL Server 2005中的表中删除标识?
当我使用Management Studio时,它会生成一个脚本,用于创建没有标识的镜像表,复制数据,删除表,然后重命名镜像表等.此脚本中有5231行,因为此表/列有许多FK关系.
运行一个简单的改变/丢弃让我感觉更舒服.有任何想法吗?
编辑
我想我将使用企业管理器中的5,231行脚本.但是,我打算将它分解成更小的部分,我可以更好地运行和控制.这个表"行为"很奇怪,如果你试图删除1行(即使你刚插入一行,这不在任何其他FK表中),你会收到这个错误:
delete MyTable where MyPrimaryKey=1234
Msg 8621, Level 17, State 2, Line 1
The query processor ran out of stack space during query optimization. Please simplify the query.
Run Code Online (Sandbox Code Playgroud)
毫无疑问,所有的FK.当我们进行这些架构和相关的应用程序更改时,我们将暂停对应用程序的所有访问并以单用户模式运行.但是,我们需要快速运行,我需要知道需要多长时间.我想我只需要测试,测试,测试.
我有一个从数据库数据创建的大型动态表.我需要列标题行保持固定并滚动必要的行.
我在网上试过很多脚本试图让它正常工作.我想在浏览器上保持简单易用,因为一些目标计算机相当蹩脚.
这是我正在使用的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Sample</title>
</head>
<body>
<br><br><br><br>
<table id="A" border="0" width="95%" cellspacing="0" cellpadding="0" align="center" class="base">
<tr bgcolor='gray'>
<td>
<br><br><br>
need the blue column heading rows to remain fixed, and scroll the green rows:<br>
<table id="XYZ" border="1" width="625" cellspacing="0" cellpadding="0" align="center" class="base">
<thead>
<tr>
<th width="50px" bgcolor="DeepSkyBlue" align="center" valign="middle">Col 1a</th>
<th width="50px" bgcolor="DeepSkyBlue" align="center" valign="middle">Col 1b</th>
<th width="75px" bgcolor="DeepSkyBlue" align="center" valign="middle">Col 1c</th>
<th width="100px" style="border-left:medium solid black;" colspan="3" bgcolor="DeepSkyBlue" align="center" valign="middle"><b>Col 2</th> …Run Code Online (Sandbox Code Playgroud) 有没有办法在Oracle,Postgres和SQL Server中使用通用运算符进行连接.
在Oracle中我们使用'|',postgres使用'||' 和sql server使用'+'.
我通过添加自定义运算符'+'来支持字符串连接,从而解决了postgres中的问题.
有没有办法在Oracle中添加相同的运算符以支持使用'+'运算符进行字符串连接.
此代码基本上将基于一个字符串中的位置的字符转换为另一个字符串中相同位置的字符,并且它针对表中的所有行运行.
当我运行它(简化版)时:
DECLARE @R char(40)
DECLARE @U char(40)
SET @R=' abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+'+char(181)
SET @U=REVERSE(@R)
DECLARE @TestTable TABLE (RowID int identity(1,1) primary key, Unreadable varchar(500))
INSERT INTO @TestTable VALUES ('+µt$zw!*µsu+yt!+s$xy')
INSERT INTO @TestTable VALUES ('%*!!xµpxu!(')
INSERT INTO @TestTable VALUES ('pxpµnxrµu+yµs%$t')
;WITH CodeValues AS
(
SELECT
Number,SUBSTRING(@R,Number,1) AS R,ASCII(SUBSTRING(@U,Number,1)) AS UA
FROM Numbers
WHERE Number<=LEN(@R)
)
SELECT
t.RowID
,(SELECT
''+c.R
FROM Numbers n
INNER JOIN CodeValues c ON ASCII(SUBSTRING(t.Unreadable,n.Number,1))=c.UA
WHERE n.Number<=LEN(t.Unreadable)
FOR XML PATH('')
) AS readable
FROM @TestTable t
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
RowID readable …Run Code Online (Sandbox Code Playgroud) Try-Catch会捕获@@ ERROR可以发现的所有错误吗?在下面的代码片段中,检查@@ ERROR是否值得?RETURN 1111会发生吗?
SET XACT_ABORT ON
BEGIN TRANSACTION
BEGIN TRY
--do sql command here <<<<<<<<<<<
SELECT @Error=@@ERROR
IF @Error!=0
BEGIN
IF XACT_STATE()!=0
BEGIN
ROLLBACK TRANSACTION
END
RETURN 1111
END
END TRY
BEGIN CATCH
IF XACT_STATE()!=0
BEGIN
ROLLBACK TRANSACTION
END
RETURN 2222
END CATCH
IF XACT_STATE()=1
BEGIN
COMMIT
END
RETURN 0
Run Code Online (Sandbox Code Playgroud) 我需要在php 5.2应用程序中对一些纯文本数据进行模糊处理或加密.
我更喜欢一个输入字符串和输出字符串保持相同长度的解决方案.
这不需要非常强大,因为有许多其他安全层.强将是好的,但这将使程序员/ dba /支持人/等不会意外地从数据库中读取文本.
关键考虑因素
这是一个示例数据库表和数据:
int char(1) varchar(24) int date
MyPrimaryKey RowType UserText UserNo DateChange
------------ ------- ------------------------ -------- ----------------
1 N nothing special here 43 6/20/2009 12:11am
2 N same thing, wow! 78 6/23/2009 1:03pm
3 S fBJKg}.jkjWfF78dlg@45kjg 43 6/25/2009 6:45am
4 N same old, same old text 21 6/25/2009 8:11am
Run Code Online (Sandbox Code Playgroud)
应用程序将正常加载和显示行1,2和4.但是,它会有条件地(基于行类型)使用此混淆/加密和非混淆/解密逻辑来处理第3行中的文本.
任何人都可以提供混淆/加密和非混淆/解密功能代码,链接和/或指针,这将有所帮助吗?
谢谢!
编辑
我喜欢简单的base64编码理念,但有一种方法可以将数据保持在固定的大小.到目前为止列出的所有方法的输出值都大于输入值.对于某些列,这将是一个问题,用户可以输入50个字符并将其存储在varchar(50)列中.
我有一个SQL Server 2008程序,通过sp_send_dbmail发送电子邮件.
我正在使用以下代码:
set @bodyText = ( select
N'Here is one line of text ' +
N'It would be nice to have this on a 2nd line ' +
N'Below is some data: ' +
N' ' +
N' ' +
field1 +
N' ' +
field2 +
N' ' +
N'This is the last line'
from myTable )
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'myProfile',
@recipients = @to,
@body = @bodyText,
@body_format = 'TEXT',
@subject = 'Testing Email' ;
Run Code Online (Sandbox Code Playgroud)
我的myProfile设置为使用本地smtp服务器,这导致c:\ …
我在存储过程中有一个char(8)变量格式化为ddmmyyyy(此值的质量和有效性未知且超出我的控制范围).将值移动到datetime变量的最有效方法是什么,如果它不是有效的datetime则抛出错误.
DECLARE @Source char(8)
DECLARE @Destination datetime
SET @Source='07152009'
--your solution here
SELECT @Destination
Run Code Online (Sandbox Code Playgroud)
这是我能想到的最佳方式:
DECLARE @Source char(8)
DECLARE @Temp varchar(10)
DECLARE @Destination datetime
set @Source='07152009'
SET @Temp=LEFT(@Source,2)+'/'+SUBSTRING(@Source,3,2)+'/'+RIGHT(@Source,4)
IF ISDATE(@Temp)!=1
BEGIN
RAISERROR('ERROR, invalid date',16,1)
END
SET @Destination=@Temp
SELECT @Source AS Source, @Temp AS Temp, @Destination AS Destination
Run Code Online (Sandbox Code Playgroud)
编辑这里是我要去的...
DECLARE @Source char(8)
DECLARE @Destination datetime
set @Source='07152009'
BEGIN TRY
SET @Destination=CONVERT(datetime,RIGHT(@Source,4) -- YYYY
+LEFT(@Source,2) -- MM
+SUBSTRING(@Source,3,2) -- DD
)
END TRY
BEGIN CATCH
PRINT 'ERROR!!!' --I'll add a little …Run Code Online (Sandbox Code Playgroud) 所以,我一直在寻找,我发现了与我的问题相似的东西,但我需要更多的帮助来获得真正的解决方案.
我正在尝试构造一个返回2列数据的查询,第一列应该是列名本身的列表,第二列应该是该列的值.
在视觉上它看起来像这样
Column1 Column2
------- -------
columnA value_of_columnA
columnB value_of_columnB
... ...
Run Code Online (Sandbox Code Playgroud)
我很确定这需要动态SQL来实现,但我不知道如何开始创建查询.
任何帮助表示赞赏!
我有很多(超过一千个地方)的遗留T-SQL代码只能在实用程序表中INSERT的varchar(8000)列中.我们的需求已经改变,现在该列需要能够处理更大的值.因此,我需要制作该专栏varchar(max).这只是一个普通的数据列,其中没有执行搜索,没有索引,只有一个过程读取它,它是INSERT忘记应用程序(几乎像一个日志条目).
我计划仅在几个实际生成较大数据的地方进行更改,并在处理此列的单个存储过程中进行更改.
varchar(8000)为varchar(max)? T-SQL字符串函数的工作方式相同,LEN(),RTRIM(),SUBSTRING(),等. varchar(8000)?sql-server ×8
t-sql ×5
css ×1
database ×1
dynamic-sql ×1
emacs ×1
encoding ×1
encryption ×1
for-xml-path ×1
html-table ×1
javascript ×1
jquery ×1
obfuscation ×1
oracle ×1
php ×1
postgresql ×1
sql ×1