此贴用来解决一些人提出的MS SQL SERVER方面的问题. (0分)

  • 主题发起人 主题发起人 唐太宗
  • 开始时间 开始时间
请帮俺看看此题

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1170079

即:
问了很久,竟鲜有人答;只好唱长铗...

有谁做过MSSQL7.0的Replication,那东东根本玩不转?

俺想在两台MSSQL7.0+SP4上对某一数据库中的一个表做snapshot类型的Replication,
但此表中有一个类型为Text型的字段Extened_desc,在Distribution server生成snapshot
正常;但snapshot由Distribution --> Subscriber 时,在机器忙和一阵后,
系统的Distribution Error Details提示如下:
...
...
Last action: The process could not bulk copy into table '"gbitem"'.

Last command: SELECT COUNT(*) FROM "GBITEM"
WHERE TEXTPTR("EXTENDED_DESC") IS NULL
~~~~~~~~~~~~~~~~~~~~~~~~~

|Category | Source | Number |
| ODBC | ODBC SQL Server Driver | S1T00 |

Full Error Message: TimeOut expired
...

若生成Publication时,剔除字段"EXENDED_DESC",就一切OK,真奇怪,这是不是一BUG?
哪位大侠帮帮俺,多谢!又谢!再谢啦!
 
唐兄,你好!感谢你对我的问题的关心。
我在网上已得到解决此问题的一些方法,请你试一下:
1.获得安装sqlserver服务器名称:
var
SQLServer:Variant;
ServerList:Variant;
i,nServers:integer;
sRetValue:String;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
nServers:=ServerList.Count;
for i := 1 to nservers do
ListBox1.Items.Add(ServerList.Item(i));
SQLServer:=NULL;
serverList:=NULL;
end;
2.启动sqlserver服务
uses Registry, ShellAPI, FileCtrl, Unit2;
{$R *.DFM}

function IsNT: Boolean;
begin
Result := (Win32MajorVersion >= 4) and (Win32Platform = VER_PLATFORM_WIN32_NT);
end;

var
IsExists: Boolean = False;
function IsExistsMSSQL: Boolean;
const
MSSQLSERVER = 'SOFTWARE/Microsoft/MSSQLServer';
var
Reg: TRegistry;
begin
Result := IsExists;
if Result then Exit;
if not IsNT then
Reg := TRegistry.Create else
Reg := TRegistry.Create(KEY_READ);
with Reg do
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Result := KeyExists(MSSQLSERVER);
IsExists := Result;
finally
Free;
end;
end;

const
MSSQL_98StartCommand = 'scm -action 1 -pwd "%s"';
MSSQL_NTStartCommand = 'net start mssqlserver';
MSSQL_98StopCommand = 'scm -action 6';
MSSQL_NTStopCommand = 'net stop mssqlserver';

function StartMSSQL(Pass: string): Boolean;
var
S: string;
begin
Screen.Cursor := crHourGlass;
try
if not IsNT then
S := Format(MSSQL_98StartCommand, [Pass]) else
S := MSSQL_NTStartCommand;
try
WinExec(PChar(S), SW_HIDE);
Result := True;
except
Result := False;
end;
finally
Screen.Cursor := crDefault;
end;
end;

function StopMSSQL: Boolean;
begin
Screen.Cursor := crHourGlass;
try
try
if not IsNT then
WinExec(MSSQL_98StopCommand, SW_HIDE) else
WinExec(MSSQL_NTStopCommand, SW_HIDE);
Result := True;
except
Result := False;
end;
finally
Screen.Cursor := crDefault;
end;
end;
以上两个答案我均已试过可行,再此感谢给我提供答案的网友,我已不记得名字了。

 
三层结构。
当修改两条记录,比如
Item Name
1001 Name1
1002 Name2
其中Item为主键,
现在我修改,1001改1002,1002改1001,提交失败。
错误提示是主键冲突。有没有办法改三层结构的提交方式,谢谢。
 
不能回答我就删了这个问题
 
to glbboy:
当然不行了,应该先把1001改成一个没有使用过的id,如6789等,再将1002改1001,在把6789改1002就行了。就象交换两个变量的值一样,需要一个中间变量传递。
因为在提交时语句也是顺序执行的
 
唐兄请问,如何把数据库中的数据生成一个数据库脚本文件(*.sql),因为有很多基础数据是程序
安装完就需要的同时有的,mssql中我只会把库结构生成脚本。现在希望知道怎样才能将某些数据自
动生成脚本,或是那些工具提供这种功能。(不用手写)谢谢。
 
SQL Server 2000 的视图不是说视图嵌套最多可达32层的吗?我的视图也才嵌套了5层,
数据量可能也就四五万条,查询时总是显示"超时过期",是怎么一回事啊?急死人啦。
 
/*1、在客户机上动态建立ODBC连接到远程MS SQL上。
关于动态建立ODBC,DFW上已经有具体答案,请自己找找

2、Delphi程序中ADO连接到本地ACCESS上,在ADOQUERY中执行SQL语句,
实现本地ACCESS和远程MS SQL数据互导。

将远程MS SQL上的数据存到本地ACCESS数据库中
*/
Select * into temp From tablename in "" "ODBC;uid=sa;pwd=;DSN=awfi"
如数据库使用ado连接,语句该怎么实现
 
to phcn:如果记录不少,直接把数据库备份然后拿到客户的机器上恢复吧.//你说的方法
我也没听说过.
 
唐兄请看:
http://www.delphibbs.com/delphibbs/dispq.asp?LID=1335171
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1290463

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1255414
 
看看这个,N天没有答出来:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1316445
 
能帮忙解决这个问题么,谢谢!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1217201
 
谢谢唐兄,我说的方法是在一家当地比较大的软件公司的软件中看到的。他随软件附带了不少
*.sql,而且可以生成不少数据,所以我才会有此疑问。呵呵,看来如果是手写的,那些人的毅
力可嘉。总之,谢谢唐兄了。
 
陛下:
我的一个问题很久没人回答:
如下:
原表字段:wlbh,wlmc,wlgg,wldw,
现在要变成:wlbh,wlmc,wlxh,wlgg,wldw.
其中wlxh为新加的.其他字段中已经有数据.不能损坏原来的数据.
问如何用sql语句来实现.
草民:上
 
add field不是就可以的吗,你是增加字段又不是修改字段.
 
后退
顶部