select * from STRING_SPLIT('a,a', ',')
Msg 208, Level 16, State 1, Line 12
Invalid object name 'STRING_SPLIT'.
select * from STRING_SPLIT('a,a', ',')
ALTER PROCEDURE [dbo].[spSOAPMethodCall] ( @@URL SysName ,@@Header XML = NULL OUTPUT ,@@Body XML = NULL OUTPUT ) AS BEGIN -- Для установки Proxy воспользуйтесь "proxycfg -u" DECLARE @OLEObject Int ,@HTTPStatus Int ,@ErrCode Int ,@ErrMethod SysName ,@ErrSource SysName ,@ErrDescription SysName ,@@SOAPAction SysName ,@Request nvarchar(max) ;WITH XMLNAMESPACES ( 'http://www.w3.org/2001/XMLSchema-instance' AS [xsi] ,'http://www.w3.org/2001/XMLSchema' AS [xsd] ,'http://schemas.xmlsoap.org/soap/envelope/' AS [soap]) SELECT @@SOAPAction = @@Body.value('namespace-uri(/*[1])','SysName') + @@Body.value('local-name(/*[1])','SysName') ,@Request = N'<?xml version="1.0" encoding="utf-8"?>'+Convert(nvarchar(max),( SELECT @@Header AS [soap:Header] ,@@Body AS [soap:Body] FOR XML Path('soap:Envelope'),Type)) EXEC @ErrCode = sys.sp_OACreate 'MSXML2.ServerXMLHTTP', @OLEObject OUT IF (@ErrCode = 0) BEGIN EXEC @ErrCode = sys.sp_OAMethod @OLEObject ,'open' ,NULL ,'POST' ,@@URL ,'false' IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'open' GOTO Error END EXEC @ErrCode = sys.sp_OAMethod @OLEObject ,'setRequestHeader' ,NULL ,'Content-Type' ,'text/xml; charset=utf-8' IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'setRequestHeader' GOTO Error END EXEC @ErrCode = sys.sp_OAMethod @OLEObject ,'setRequestHeader' ,NULL ,'SOAPAction' ,@@SOAPAction IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'setRequestHeader' GOTO Error END EXEC @ErrCode = sys.sp_OAMethod @OLEObject ,'send' ,NULL ,@Request IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'send' GOTO Error END EXEC @ErrCode = sys.sp_OAGetProperty @OLEObject ,'status' ,@HTTPStatus OUT IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'status' GOTO Error END IF (@HTTPStatus IN (200,500)) BEGIN DECLARE @Response TABLE ( Response NVarChar(max) ) INSERT @Response EXEC @ErrCode = sys.sp_OAGetProperty @OLEObject ,'responseText' IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'responseText' GOTO Error END ;WITH XMLNAMESPACES ( 'http://www.w3.org/2001/XMLSchema-instance' AS [xsi] ,'http://www.w3.org/2001/XMLSchema' AS [xsd] ,'http://schemas.xmlsoap.org/soap/envelope/' AS [soap]) SELECT @@Header = R.X.query('/soap:Envelope/soap:Header/*') ,@@Body = R.X.query('/soap:Envelope/soap:Body/*') FROM @Response CROSS APPLY (SELECT Convert(XML,Replace(Response,' encoding="utf-8"','')) AS X) R -- Fault ;WITH XMLNAMESPACES ( 'http://www.w3.org/2001/XMLSchema-instance' AS [xsi] ,'http://www.w3.org/2001/XMLSchema' AS [xsd] ,'http://schemas.xmlsoap.org/soap/envelope/' AS [soap]) SELECT @ErrMethod = @@SOAPAction ,@ErrSource = @@Body.value('(/soap:Fault/faultcode)[1]' ,'SysName') ,@ErrDescription= @@Body.value('(/soap:Fault/faultstring)[1]' ,'SysName') WHERE @HTTPStatus = 500 END ELSE SELECT @ErrMethod = 'send' ,@ErrSource = 'spSOAPMethod' ,@ErrDescription= 'Ошибоный статус HTTP ответа "' + Convert(VarChar,@HTTPStatus) + '"' GOTO Destroy Error: EXEC @ErrCode = sys.sp_OAGetErrorInfo @OLEObject ,@ErrSource OUT ,@ErrDescription OUT Destroy:EXEC @ErrCode = sys.sp_OADestroy @OLEObject IF (@ErrSource IS NOT NULL) BEGIN RAISERROR('Ошибка при выполнении метода "%s" в "%s": %s',18,1,@ErrMethod,@ErrSource,@ErrDescription) IF (@@TranCount > 0 AND XACT_STATE() != 0) ROLLBACK RETURN @@Error END END ELSE BEGIN RAISERROR('Ошибка при создании OLE объекта "MSXML2.ServerXMLHTTP"',18,1) RETURN @@Error END END
DECLARE @URL SysName ,@Body XML -- Создание запроса ;WITH XMLNAMESPACES (DEFAULT 'http://mcommunicator.ru/M2M/') SELECT @URL = 'http://www.mcommunicator.ru/m2m/m2m_api.asmx' ,@Body = ( SELECT '1111' AS msid ,'test' AS [message] ,'1111' as naming ,'1111' AS [login] ,'202cb962ac59075b964b07152d234b70' as [password] --пароль в MD5 FOR XML Path('SendMessage'),Type) -- Вызов WebMethod-а EXEC dbo.spSOAPMethodCall @URL ,NULL ,@Body OUT -- Результат ;WITH XMLNAMESPACES (DEFAULT 'http://mcommunicator.ru/M2M') SELECT @Body.query('/SendMessageResponse/SendMessageResult/*')
DELETE FROM [messages] WHERE ([datetime]< 'конечная дата периода' AND [datetime]> 'начальная дата периода')
CREATE PROCEDURE dbo.procedure1 AS UPDATE T SET F='Сидоров' WHERE F='Иванов' GO
SELECT pgName, PComp.ID AS pcID, pcName, PComp.pgiID, sumComp FROM PComp WITH(noLock) INNER JOIN PGroup WITH(noLock) ON PGroup.pgiID = PComp.pgiID CROSS APPLY (SELECT SUM(dbo.Cena(Comp.toID, 0, PGroup.pgNadb, 0, 1)) As [sumComp] FROM Comp WITH(noLock) WHERE Comp.pcID = PComp.ID) crossApply ORDER BY pgName, pcName;
|
SELECT * FROM (SELECT a_id, b_id = (SELECT substring(cn, start, end_-37) FROM (SELECT charindex(':', p.b_id) + 1 as start, charindex(':', p.b_id, charindex(':', p.b_id) + 1) - 1 as end_, p.b_id AS cn WHERE len(p.b_id) > 10) AS t) FROM dbo.tbl_1 AS p) AS tt WHERE b_id = '15808'
SELECT b_id, a_id FROM (SELECT SUBSTRING(cn, start, end_ - 37) AS b_id, a_id from (SELECT CHARINDEX(':', dbo.tbl_1.b_id) + 1 AS start, CHARINDEX(':', dbo.tbl_1.b_id, CHARINDEX(':', dbo.tbl_1.b_id) + 1) - 1 AS end_, dbo.tbl_1.b_id AS cn, b_id FROM dbo.tbl_1 WHERE (LEN(dbo.tbl_1.b_id) > 10)) as tt) as ttt WHERE b_id='15808'
Функции LEFT или SUBSTRING передан недопустимый параметр длины. |
Модератор: Тема перенесена из форума "Работа". |
Доступна запись OLE DB. Источник: "Microsoft OLE DB Provider for SQL Server" Результат: 0x80040E4D Описание: "Login failed for user 'sa'.".
+ полный скрипт |
--- YOU MUST EXECUTE THE FOLLOWING SCRIPT IN SQLCMD MODE. :Connect NODE2012r2 IF (SELECT state FROM sys.endpoints WHERE name = N'Hadr_endpoint') <> 0 BEGIN ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED END GO use [master] GO GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [NT Service\MSSQLSERVER] GO :Connect NODE2016 IF (SELECT state FROM sys.endpoints WHERE name = N'Hadr_endpoint') <> 0 BEGIN ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED END GO use [master] GO GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [NT Service\MSSQLSERVER] GO :Connect NODE2012r2 IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='AlwaysOn_health') BEGIN ALTER EVENT SESSION [AlwaysOn_health] ON SERVER WITH (STARTUP_STATE=ON); END IF NOT EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE name='AlwaysOn_health') BEGIN ALTER EVENT SESSION [AlwaysOn_health] ON SERVER STATE=START; END GO :Connect NODE2016 IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='AlwaysOn_health') BEGIN ALTER EVENT SESSION [AlwaysOn_health] ON SERVER WITH (STARTUP_STATE=ON); END IF NOT EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE name='AlwaysOn_health') BEGIN ALTER EVENT SESSION [AlwaysOn_health] ON SERVER STATE=START; END GO :Connect NODE2012r2 USE [master] GO CREATE AVAILABILITY GROUP [grp1] WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY) FOR DATABASE [db1] REPLICA ON N'NODE2012R2' WITH (ENDPOINT_URL = N'TCP://node2012r2.kurenkov.test:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50, SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)), N'NODE2016' WITH (ENDPOINT_URL = N'TCP://node2016.kurenkov.test:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50, SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)); GO :Connect NODE2016 ALTER AVAILABILITY GROUP [grp1] JOIN; GO :Connect NODE2012r2 BACKUP DATABASE [db1] TO DISK = N'\\adtest\Share\db1.bak' WITH COPY_ONLY, FORMAT, INIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 5 GO :Connect NODE2016 RESTORE DATABASE [db1] FROM DISK = N'\\adtest\Share\db1.bak' WITH NORECOVERY, NOUNLOAD, STATS = 5 GO :Connect NODE2012r2 BACKUP LOG [db1] TO DISK = N'\\adtest\Share\db1_20161215115747.trn' WITH NOFORMAT, NOINIT, NOSKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 5 GO :Connect NODE2016 RESTORE LOG [db1] FROM DISK = N'\\adtest\Share\db1_20161215115747.trn' WITH NORECOVERY, NOUNLOAD, STATS = 5 GO :Connect NODE2016 -- Wait for the replica to start communicating begin try declare @conn bit declare @count int declare @replica_id uniqueidentifier declare @group_id uniqueidentifier set @conn = 0 set @count = 30 -- wait for 5 minutes if (serverproperty('IsHadrEnabled') = 1) and (isnull((select member_state from master.sys.dm_hadr_cluster_members where upper(member_name COLLATE Latin1_General_CI_AS) = upper(cast(serverproperty('ComputerNamePhysicalNetBIOS') as nvarchar(256)) COLLATE Latin1_General_CI_AS)), 0) <> 0) and (isnull((select state from master.sys.database_mirroring_endpoints), 1) = 0) begin select @group_id = ags.group_id from master.sys.availability_groups as ags where name = N'grp1' select @replica_id = replicas.replica_id from master.sys.availability_replicas as replicas where upper(replicas.replica_server_name COLLATE Latin1_General_CI_AS) = upper(@@SERVERNAME COLLATE Latin1_General_CI_AS) and group_id = @group_id while @conn <> 1 and @count > 0 begin set @conn = isnull((select connected_state from master.sys.dm_hadr_availability_replica_states as states where states.replica_id = @replica_id), 1) if @conn = 1 begin -- exit loop when the replica is connected, or if the query cannot find the replica status break end waitfor delay '00:00:10' set @count = @count - 1 end end end try begin catch -- If the wait loop fails, do not stop execution of the alter database statement end catch ALTER DATABASE [db1] SET HADR AVAILABILITY GROUP = [grp1]; GO |
+ сам шаг скрипта сгенерированного мастером |
-- Wait for the replica to start communicating begin try declare @conn bit declare @count int declare @replica_id uniqueidentifier declare @group_id uniqueidentifier set @conn = 0 set @count = 30 -- wait for 5 minutes if (serverproperty('IsHadrEnabled') = 1) and (isnull((select member_state from master.sys.dm_hadr_cluster_members where upper(member_name COLLATE Latin1_General_CI_AS) = upper(cast(serverproperty('ComputerNamePhysicalNetBIOS') as nvarchar(256)) COLLATE Latin1_General_CI_AS)), 0) <> 0) and (isnull((select state from master.sys.database_mirroring_endpoints), 1) = 0) begin select @group_id = ags.group_id from master.sys.availability_groups as ags where name = N'grp1' select @replica_id = replicas.replica_id from master.sys.availability_replicas as replicas where upper(replicas.replica_server_name COLLATE Latin1_General_CI_AS) = upper(@@SERVERNAME COLLATE Latin1_General_CI_AS) and group_id = @group_id while @conn <> 1 and @count > 0 begin set @conn = isnull((select connected_state from master.sys.dm_hadr_availability_replica_states as states where states.replica_id = @replica_id), 1) if @conn = 1 begin -- exit loop when the replica is connected, or if the query cannot find the replica status break end waitfor delay '00:00:10' set @count = @count - 1 end end end try begin catch -- If the wait loop fails, do not stop execution of the alter database statement end catch ALTER DATABASE [db1] SET HADR AVAILABILITY GROUP = [grp1]; |