只让指定的机器连接SQLServer服务器 收藏
背景
只想使某个IP的计算机才能连接到SQL Server服务器,不允许其他客户端连接。
解决方法
可以直接在防火墙中做限制,只允许与指定的IP地址建立1433的通讯。当然,从更为安全的角度来考虑,应该把1433端口改成其他的端口。
其他解决方法1(限从指定IP接入的客户端)
如果使用SQL Server 2005,还可以通过端点限制的方法来实现,此方法要求一块专门的网卡,所有可以连接SQL Server的客户端均通过此网卡接入(假设此网卡的IP是192.168.1.1):
1. 在“SQL Server 配置管理器”的“SQL Server 2005网络配置中”,禁止除TCP/IP之外的所有协议;
2. 使用如下的T-SQL禁止默认的TCP端点
ALTER ENDPOINT [TSQL Default TCP]
STATE = STOPPED
3. 使用如下的T-SQL建立新的TCP端点和授权
USE master
GO
-- 建立一个新的端点
CREATE ENDPOINT [TSQL User TCP]
STATE = STARTED
AS TCP(
LISTENER_PORT = 1433,
LISTENER_IP = (192.168.1.1) -- 侦听的网络地址
)
FOR T ......
Sqlserver得到汉字拼音首字母存储过程:
create function [dbo].[fun_getPY]
(
@str nvarchar(4000)
)
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (select top 1 PY from (
select 'A' as PY,N'骜' as word
union all select 'B',N'簿'
union all select 'C',N'错'
union all select 'D',N'鵽'
union a ......
sqlserver2005有关键字ntile(x)和over(partition by.. order by..)子句配合.
比如获取每个表的前10%个字段。
select id , name , colid , rn from (
select * , rn = ntile (10 )
over (partition by id order by colorder )
from syscolumns )t where rn = 1 ......
可以用扩展存储过程xp_dirtree获取文件列表,用openrowset倒入数据到二进制字段。
openrowset的用法可以参考msdn
http://technet.microsoft.com/zh-cn/library/ms190312.aspx
如果文件很多,建议还是用程序倒入了
if (object_id ('t_bulkResult' ) is not null )
drop table t_bulkResult
create table t_bulkResult (name varchar (1000 ), data image )
go
declare @d varchar (1000 )
set @d = 'c:\test\'
create table #tb (fName varchar (1000 ), d int , f int )
insert into #tb exec xp_dirtree @d , 1 , 1
delete from #tb where f <> 1
declare @ sql nvarchar (max )
select @ sql = isnull (@ sql , '' )+ 'insert into t_bulkResult select ''' +@d + fname + ''',* from openrowset(bulk N''' +@d + fName + ''', SINGLE_BLOB) b
'
from #tb a
exec sp_executesql @ sql
drop table #tb
select * from t_bulkResult ......
/*
sql xml 入门:
--by jinjazz
--http://blog.csdn.net/jinjazz
1、xml: 能认识元素、属性和值
2、xpath: 寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)
语法格式,这些语法可以组合为条件:
"."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,
"name"表示按名字查找,"@name"表示按属性查找
&n ......
SQLServer中有两个扩展存储过程实现Scanf和Printf功能,恰当的使用它们可以在提取和拼接字符串时大幅度简化SQL代码。
1、xp_sscanf,用它可以分解格式相对固定的字符串,这对于厌倦使用一堆substring和charindex的朋友来说不错。比如前几天的一个帖子中提出的如何分解ip地址,相对简练且通用的代码应该是下面这样
--------------------------------------------------------------------------------
if (object_id ('f_getip' ) is not null )
drop function f_getip
go
create function dbo . f_getip (@ ip varchar (100 ))
returns @ t table (a int , b int , c int , d int )
as
begin
set @ ip = replace (@ ip , '.' , ' ' )
declare
@ s1 varchar (3 ) , @ s2 varchar (3 ),
@ s3 varchar (3 ) , @ s4 varchar (3 )
exec xp_sscanf @ ip , '%s %s %s %s' , @ s1 output , @ s2 output , @ s3 output , @ s4 output
insert into @ t select @ s1 , @ s2 , @ s3 , @ s4
return
end
go
select * ......