Thursday, 26 March 2015

Reporting Services – Problem - Your browser does not support scripts or has been configured not to allow scripts

Solution
Should you get it as well follow the instruction below:

•go to (from its menu) Tools/Internet Options
•go to Security tab
•select Trusted zone / sites from the list of available zones
•click Sites button
•in new window provide the URL of the Reports Manager (e.g. http://MACHINE_NAME/*); if you are running Reports Manager not on the default port, provide the port number as well

DYNAMIC TABLE CREATION

CREATE TABLE LISTID (ID INT NOT NULL)
GO
INSERT INTO LISTID  VALUES (111)
INSERT INTO LISTID  VALUES (112)
INSERT INTO LISTID  VALUES (113)
INSERT INTO LISTID  VALUES (114)
INSERT INTO LISTID  VALUES (115)
GO

DECLARE @LISTID TABLE (ID INT NOT NULL)
INSERT INTO @LISTID (ID)
SELECT DISTINCT (ID) FROM LISTID

DECLARE @LISTTALE TABLE (NAME VARCHAR(100) NOT NULL)
INSERT INTO @LISTTALE (NAME)
SELECT 'SELECT * FROM LIST' + CAST(ID AS VARCHAR(100))  FROM @LISTID

DECLARE @LISTSTR VARCHAR(8000);
SET @LISTSTR = ''SELECT @LISTSTR =  @LISTSTR + NAME + ' UNION ALL '
FROM @LISTTALE; SELECT SUBSTRING(@LISTSTR , 1, LEN(@LISTSTR)-9)
GO

DYNAMIC TABLE CREATION:

DECLARE @SQLSTRING NVARCHAR(MAX);                          

SET @SQLSTRING = '
DECLARE @LISTID TABLE (ID INT NOT NULL)
INSERT INTO @LISTID (ID)
SELECT DISTINCT (ID) FROM LISTID

DECLARE @LISTTALE TABLE (NAME VARCHAR(100) NOT NULL)
INSERT INTO @LISTTALE (NAME)
SELECT ''SELECT * FROM LIST'' + CAST(ID AS VARCHAR(100))  FROM @LISTID

DECLARE @LISTSTR VARCHAR(8000);
SET @LISTSTR = ''''SELECT @LISTSTR =  @LISTSTR + NAME + '' UNION ALL ''
FROM @LISTTALE; SELECT SUBSTRING(@LISTSTR , 1, LEN(@LISTSTR)-9)'  --- -9 IS TO REMOVE UNION ALL
PRINT @SQLSTRING
EXEC (@SQLSTRING)


Wednesday, 25 March 2015

Backup Split - Scripts

BACKUP DATABASE DBNAME TO
DISK = 'E:\TEMP\DBNAME_SPLIT1.BAK',
DISK = 'E:\TEMP\DBNAME_SPLIT2.BAK',
DISK = 'E:\TEMP\DBNAME_SPLIT3.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT4.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT5.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT6.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT7.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT8.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT9.BAK'
,DISK = 'E:\TEMP\DBNAME_SPLIT10.BAK'
WITH COMPRESSION, INIT, STATS=1

GO

GEOLOCATIONS CODE

REFERENCE:

http://www.geodatasource.com/developers/mssql


create function dbo.Distance( @lat1 float , @long1 float , @lat2 float , @long2 float)
returns float

as

begin

declare @DegToRad as float
declare @Ans as float
declare @Miles as float

set @DegToRad = 57.29577951
set @Ans = 0
set @Miles = 0

if @lat1 is null or @lat1 = 0 or @long1 is null or @long1 = 0 or @lat2 is
null or @lat2 = 0 or @long2 is null or @long2 = 0

begin

return ( @Miles )

end

set @Ans = SIN(@lat1 / @DegToRad) * SIN(@lat2 / @DegToRad) + COS(@lat1 / @DegToRad ) * COS( @lat2 / @DegToRad ) * COS(ABS(@long2 - @long1 )/@DegToRad)

set @Miles = 3959 * ATAN(SQRT(1 - SQUARE(@Ans)) / @Ans)

set @Miles = CEILING(@Miles)

return ( @Miles )


end

Reference:

http://www.mssqltips.com/sqlservertip/2690/calculate-the-geographical-distance-between-two-cities-in-sql-server/

TO GET THE MILES AND KILOMETRES:

CREATE PROCEDURE DBO.GEOLOCATIONDISTANCE (@CUSTOMERINDEXKEY_ID INT,@unit varchar(5)) 
AS 
BEGIN 
DECLARE @POSTCODE [VARCHAR](9), @LATITUDE1 [DECIMAL](18,15),@LONGITUDE1 [DECIMAL](18,15) 
SELECT TOP 1 @POSTCODE = REPLACE(POSTCODE,' ','') 
FROM ADDRESS(NOLOCK) WHERE CUSTOMERINDEXKEY_ID = @CUSTOMERINDEXKEY_ID 
ORDER BY SEQNUM DESC 
SELECT @CUSTOMERINDEXKEY_ID AS CUSTOMERINDEXKEY_ID, @POSTCODE AS POSTCODE 
 
SELECT @LATITUDE1 = LATITUDE, @LONGITUDE1 = LONGITUDE FROM PRDDOL.POSTCODELATLNG (NOLOCK) WHERE POSTCODE = @POSTCODE 
 
SELECT @LATITUDE1,@LONGITUDE1 
DECLARE @orig_lat DECIMAL(12,9) 
DECLARE @orig_lng DECIMAL(12,9) 
 
SET @orig_lat=@LATITUDE1 set @orig_lng=@LONGITUDE1 
 
DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326); 
if @unit = 'miles' 
SELECT *, 
    @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326))/1609.344  
       AS distance 
--INTO #includeDistances 
FROM  DEALER  dest WHERE ([LATITUDE] IS NOT NULL AND LONGITUDE IS NOT NULL) 
ORDER BY DISTANCE ASC
else
SELECT *, 
    @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326))/1000
       AS distance 
--INTO #includeDistances 
FROM  DEALER  dest WHERE ([LATITUDE] IS NOT NULL AND LONGITUDE IS NOT NULL)
ORDER BY DISTANCE ASC 
 

END

Tuesday, 24 March 2015

CHECK FOR DATA USING NOT EXISTS IN B CHILD TABLE COMPARED TO A SOURCE TABLE

CHECK FOR DATA USING NOT EXISTS IN B TABLE  COMPARED TO A SOURCE TABLE


SELECT ID
FROM  ITEMSA(NOLOCK) A
WHERE NOT EXISTS
(
    SELECT INVOICEITEM_ID
    FROM  ITEMSB (NOLOCK) B
    WHERE A.Id = B.ID
)

GO

SELECT DISTINCT A.ID
FROM ITEMS(NOLOCK) A
LEFT JOIN JLRMCTPRD.[PRDDOL].[INVOICEITEMS] (NOLOCK) B
    ON A.Id = B.INVOICEITEM_ID
WHERE B.INVOICEITEM_ID IS NULL



-- using EXISTS to check for existence
SELECT P.ProductID
FROM Production.Product p
WHERE EXISTS
(
    SELECT 1
    FROM Sales.SalesOrderDetail sod
    WHERE sod.ProductID = p.ProductID
)

-- Using LEFT JOIN to check for existence
GO
SELECT DISTINCT P.ProductID
FROM Production.Product p
LEFT JOIN Sales.SalesOrderDetail sod
    ON sod.ProductID = p.ProductID
WHERE sod.SalesOrderDetailID IS NOT NULL

REFERENCE: http://sqlserverplanet.com/tsql/comparing-exists-vs-left-join-where-not-null