I have an OLAP database which is required to update daily. First of all back track a bit about this OLAP database, It is built from an OLAP data source consists of a dozen "Dimension" tables and half a dozen "Fact" tables and they are set up in a normalized relationship. This 20 or so OLAP tables are created from a single "Production" data warehouse de-normalized table. By the way the database engine, SSAS, SSRS and SSIS are installed in one virtual server using Sql 2005 SP2.
Here are the steps I update the OLAP database manually.
At Sql database engine
Drop the existing data warehouse table at the virtual server
Copy the up-todate data warehouse table from a remote server and paste to the database at the virtual server
Drop all the OLAP Fact tables
Drop all the OLAP Dimension tables
Create the Dimension Tables using the Sql script I saved when first created
Create the Fact Tables using the Sql script I saved when first created
Populate the data to the Dimension Tables from the data warehouse table using the Sql script I saved when first created
Populate the data to the Fact tables from the data warehouse table using the Sql script I saved when first created
Assign indexs and constrains to the Dimension Tables
Assign indexs and constrains to the Fact Tables
At Sql Server Analysis Services
Process the 15 Dimensions
Process the 2 OLAP cube
I want to automate the whole process using SSIS. I am new to SSIS and I need some direction on how to make it work?
Hi, I have a query thatI need to make into one query for the sake of an application reading only one cursor.
Here's the syntax: select (select distinct(x.amount) from escrow k inner join e120 x on k.escrow = x.escrowinner join a10 g on x.escrow = g.escrow where k.ftype = 'S' group by x.amount, g.officer) As New,a.officer as Officer, count(distinct(j.fstatus))as Escrow_Type, count(distinct(j.amount))as Amount, count(distinct(d.open_date))as [Open], count(distinct(d.close_date)) as Closed, count(distinct(can_date))as Cancelled from a10 a inner join escrow d on a.escrow = d.escrowinner join e120 j on j.escrow = d.escrow where j.id_scr = 'e21' and j.fstatus = 'PAID' group by a.officer
The error message i'm recieving is the following:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
I have a scenario whereby I'd like to insert multiple rows into a table on a SQL server database as efficiently and easily as possible. After some research, it looked like .NET 3.0's SqlBulkCopy class would do what I want. I've tried to set something up, but it's not working. It's not even throwing an error. The code executes but it simply hasn't done the insert by the end of it! My table structure is simple. The name of the table is LPSTUnavailableDate. It has just two columns, one of them an auto-populated ID field:
I am currently stuck on how to make this 2 separate query work together, both work as i want them to individually, please note the syntax is according to a application i use that uses mysql to manipulate columns in an imported csv file.
CONCAT('at-', REPLACE([CSV_COL(18)],'http://www.homebuy.co.uk/product.php/','') ) removes last character i.e. / SUBSTRING([CSV_COL(18)], 1, CHAR_LENGTH([CSV_COL(18)]) - 1)
basically i need these 2 to work together to give me an output like this
at-09fd8903
from the this. URL...url above minus the "" as i said both work on there own, but not together.
Hi - I'm in a situation with a very large table, and trying to run an update that, any way I've approached it so far, seems to be taking unnacceptably long to run. Table has about 20 million rows, looks something like this:
ID - int, identity Type - varchar(50) PurchaseNumber - varchar(50) SalesAmount - Money
ID Type PurchaseNumber SalesAmount 1 A 3834AA38384 20.32$ 2 B 3834AA38384 11837.32$ 3 C 3834AA38384 666.32$ 4 C 887DF88U01H 23423.32$ 5 A 887DF88U01H 12.32$ 6 B OI83999FH28 4747.1$ 7 D 38438495985 9384.6 8 E 02939DDJJWI 22.22$ 9 F 07939SDFDF2 33.33$
The goal of the update is to make the [Type] uniform across [PurchaseNumbers], according to the max sales amount. For each PurchaseNumber a, set the type = the type of the row that has the MAX salesAmount. If there is only one entry for PurchaseNumber, leave the type alone. Expected update after completion would look like this:
ID Type PurchaseNumber SalesAmount 1 B 3834AA38384 20.32$ 2 B 3834AA38384 11837.32$ 3 B 3834AA38384 666.32$ 4 C 887DF88U01H 23423.32$ 5 C 887DF88U01H 12.32$ 6 B OI83999FH28 4747.1$ 7 D 38438495985 9384.6 8 E 02939DDJJWI 22.22$ 9 F 07939SDFDF2 33.33$
I got this out of a warehouse, and it definitely isn't normalized well. Was considering breaking down into a better model, but I'm not yet sure if that would make the update easier.
I've been approaching this with sub-queries (finding all the PurchaseNumbers with more then one entry, then the max sales purchase of that purchase Number, then the type of that purchase number and sales amount to update all of that purchase number) but this not only ends up a little messy, but also very slow.
The only other detail that may be important is that out of the 20 million total rows, about 19.5 million purchaseNumbers are unique. So, really, there are only about 500k rows I actually have to update.
I've thought of a few ways to make this work, but none of them seem fast and wanted to see if anyone had a pointer. Thanks!
Hello, I have what should be a very simple problem, but I cant solve it. I want to have a stored procedure return a table query (no problems here) but I also need to supply several parameters to the stored procedure (again, no problem!)
Here is the problem, I need to be able to supply a wildcard into the stored procedure as an argument somehow. I can do this already, but the results are incorrect!!! It seems like when local variables are used, the wildcard argument gets ignored. for example, I have included the following example:
DECLARE @Dv_id nchar(15)
SET @Drv_id = '%'
SELECT Diver.*, (ROW_NUMBER() OVER(ORDER BY Dv_id)) as RowNum FROM Diver WHERE Dv_id LIKE @Dv_id
SELECT Diver.*, (ROW_NUMBER() OVER(ORDER BY Dv_id)) as RowNum FROM Diver WHERE Dv_id LIKE '%'
OK, this is an example of my problem, the results I get from this are that the fist SELECT return 0 rows. The second SELECT returns the correct number of rows (everything in the table). Why is there a difference between: WHERE Drv_id LIKE @Drv_id and WHERE Drv_id LIKE '%' ? The wildcard statement '%' is supposed match everything, correct?? It seems like the local variable SET command syntax eats up my value of '%' and turns it into a NULL.
Good Morning, I've been searching through all the tutorials and questions, have tried many things. I am still getting "[SqlException (0x80131904): An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]"
as an error. This is what I've got:
I€™m using SQL Server Express 2005, installed with the default settings. Had not touched this program for anything until I started to follow directions to fix Error 26. Visual Web Developer Express ASP.NET is what I€™ve used to build the webpage. I was using the ASP.NET web configuration to add users to the database, which is set to use the provider ASPSqlServerProvider. SQL Server 2005 Surface Area Configuration Database Engine Remote Connections €“ set to €œLocal and Remote Connections €“ Using TCP/IP Only€? SQL Server Browser is Enabled and Running - is set to Active, under Built In Account €“ Network Service I have created Windows firewall exceptions for: sqlservr.exe sqlbrowser.exe udp port 1434 SQL Server Configuration Manager both SQL Server and SQL Server Browser are running. Under SQL Server 2005 Network Configuration Shared Memory and TCP/IP are enabled only.
SQL Native Client Configuration Shared Memory 1 TCP/IP 2 Named Pipes 3 all enabled
I read through the post at http://blogs.msdn.com/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx but as I'm new to SqlServer I do not know how to check on the first three items.
I'm getting extremely frustrated, and would just like the login portion of this website to start working before my boot ends up through the computer. Please help, lol, thank you.
Below is the stored procedure i have it works fine if i have 1 value passed to @invited_by but i want to modify but i want this code to be working for multiple inputs .Lets say if i do
exec [dbo].[sp_GetInvitationStatusTest] 'Test1 . I get the desired output but i want this procedure to work for exec [dbo].[sp_GetInvitationStatusTest] 'Test1,Test2'. USE [merck_acronyms] GO
Clean vista install, Clean full office 2007plus install Clean visual studio 2008pro install Many failed sql 2005dev installed, did SKUUPGRADE-1 Now have office2007 Smallbiz, VS2008pro, SqlExpress and sql 2005dev installed. Note outlook 2007 error on first run after sql2005dev. Seams to have broken and created a new sql connection, don€™t think its the original. but that€™s not the current issue ! web admin page error, could not connect to db I did regsql.exe from the net dir and the web admin work and the db is created for roles and such in vs 2008 via web admin page and mssql. Managed to create db in apps data folder and modify connection in server explorer. Added table to aspx page from apps folder and it runs via f5, but errors under localhost. €œCannot open user default database. Login failed.€? €œLogin failed for user 'NT AUTHORITYNETWORK SERVICE'€? Have seen some reference to iis permissions, but not sure what to change? Is it a file level permission, a virtual permission Works in vs2008 using f5 run! http://localhost:50115/vs2008/ Can work with apps folder db file in vs 2008 server explorer Had to modify db connection back to sqlexpress in server explorer Can work with db in sql management studio, have three local instances; Pc Pcsqlexpress Pcsmallbiz Can display db data in aspx page via f5 , but not localhost unless vs2008 is not running!!! Have not been able to make vs2008, Sql2005dev, sqlexpress all work together using iis in vista via localhost and vs2008 f5 at same time?? Can€™t do anything with db in solutions explorer, but can work in server explorer if I modify connection back to sqlexpress Can€™t display data aspx page via localhost http://localhost/vs2008/ Cannot open user default database. Login failed. Login failed for user 'NT AUTHORITYNETWORK SERVICE' Localhost works in iis via virtual directory if I remove db grid in page or vs is not running Could someone test and tell how to use all of these together? What is going to happen if I get it to work local and then try to upload to shared host? <connectionStrings> <remove name="LocalSqlServer" /> <add name="LocalSqlServer" connectionString="Server=wabpc;Database=VS2008test;Integrated Security=true" providerName="System.Data.SqlClient" /> <add connectionString="Server=SQLEXPRESS;Database=Database.mdf;Integrated Security=true" name="sqlexpress" />
</connectionStrings> If I close vs2008 and the management studio, localhost works and displays the db info!! Open vs2008, modify connection back to sqlexpress and the aspx page breaks via localhost Close vs2008 and local host works Open vs2008 and get a error 25 in server explorer connection string invalid, but f5 works after the offline clears. I change db connection back to sqlexpress to work with db in server explorer! That breaks localhost, but f5 works
Sorry for the less then descriptive post title but I didn't find a better way to describe it. I'm developing an app in the express editions of VB and SQLserver. The application is a task/resource scheduler. The main form will have a datepicker or weekly overview and show all tasks scheduled per day. The problem is, I've got one or more people assigned to tasks and I wonder what's the best way to design this. Personally, I'd go for one Task table, a People table and a table that provides a link between them (several record per task, one for each person assigned linking TaskID and PplID). However, I don't see a nice way of showing this data to the end user, allowing him to edit/add etc on ONE screen.
To fix that the only way I see is just add columns to the Task table for every person with select boxes. This way everything can be done on one simple screen. This obviously does present some future issues.
On top of this, which people are available on a day varies and there should be an option to allow a user to set who is available on a specific day. Which would lead me to my first idea and add another table that would provide this. but then I'm having design issues again for the form.
I'm kinda stuck atm, can anyone shed some light on this. I'm sure there is an elegant way of doing this but I'm failing at finding it.
Can somebody help me convert this SQL2000 Function TO C# Function pleaseCREATE Function dbo.CalculateNextRentDate ( @Rent_Payment_Date datetime, @Frequency varchar(50) , @Number int)RETURNS DATETIMEASbeginDECLARE @NextPaymentDate DatetimeSET @Number = @Number - 1.IF @Frequency = 'month' IF @rent_payment_date = dateadd(month, datediff(month, 0+@Number, @rent_payment_date) + 1, -1) BEGIN SET @NextPaymentDate = dateadd(month, datediff(month, 0, @rent_payment_date) + 2, -1) END ELSE BEGIN SET @NextPaymentDate = dateadd(month, 1+@Number, @rent_payment_date) END return @NextPaymentDateend
Our company has its Departments And Services. Now We are making it online. Both have separate email list, phone numbers, and more. Will I make one table and adds the field Type (Values: D or S). Or make them separate. Remember one thing If we merge them then Email And PhoneNumber Table will also me merge other wise they will also separate. What is better.
How to make our own DTS package I have to split the data on my own.. Data is very biig almost 30 to 40 million. I need to splitt them into 10k chunks in database and with my desired table name. Waiting for a +tive reply.
hi i have a tabel in my database i tray to generat report for this tabel this tabel have all this fields: company_id emp_no seq_no interval_date in_time in_type out_time out_type wage_code status i want all his colums can be search but with company_id like if he enter company_id and emp_no okay give him result if he enter Company_id and interval_date okay give him result i write this
Code Snippet SELECT company_id, emp_no, seq_no, interval_date, in_time, in_type, out_time, out_type, wage_code, status FROM interval WHERE (company_id LIKE @CompanyID) AND (emp_no LIKE @EmployeeID) OR (company_id = @CompanyID) AND (interval_date = @IntervalDate) OR (company_id = @CompanyID) AND (in_time = @InTime) OR (company_id = @CompanyID) AND (in_type = @InType) OR (company_id = @CompanyID) AND (out_time = @OutTime) OR (company_id = @CompanyID) AND (out_type = @OutType) OR (company_id = @CompanyID) AND (wage_code = @WageCode) OR (company_id = @CompanyID) AND (status = @Status)
but in report preview it tell me i must enter intrevalDate ?
Hi have have this problem, I have a table called PABX that has all the callings registry and what I need to do is for each client(PABX.cod_client) I have 2 types of calls (VC1, VC2) , and for these types I need to select all the registries chaging the dialed number(PABX.NRTELEFONE) for the new one (TROCAR.NRTELEFONE) and for those client that doesn't need to change select the PABX.NRTELEFONE
is it possible through SQL Server 2000(via stored procedure) or I'll need to do it by my application using a vector ?
hiiiiiiiiii I am creating a web application using vb.net in which i m using the concept of classes. now i am done all the code for inserting the values in the database using the class but it is difficult to fetch the values from the database using select command and sending them to a WebForm . i want to know how i send send the values coming from the select command to a datagrid or another web controlif possible provide me a sample code thanks for your help
hello all i have a 2 questions hope that u can help me my first question is: in ms access there was a data type named yes/no and it was a checkbox is there a checkbox data type in sql server 2005? my second question is i need the connection code between asp.net 2005 and sql server 2005 i searched in here for that code but i got more confuse i found two codes and both are not working so hope u can give me the right connecting code. that's all thanks
Can anyone tell me how I would go about making my SQL server accessable from the Internet, or know of any good tutorials to get me started, I haven't had much luck looking on google.
I need to access an SQL database from one server on another server for a web application.
Hi guys, I have a car_race table which has these fields
car_id int race_id int b_car_won varchar // can have 'y' or 'n'
I need to know if the car lost the 1st race but won the next race
And example of that table for car_id 1:
car_id 1 race_id 1 b_car_won 'NO'
car_id 1 race_id 2 b_car_won 'YES'
Now this is the tricky part, the database has some data integrity issues, so this can occur:
car_id 1 race_id 1 b_car_won 'NO'
car_id 1 race_id 3 b_car_won 'YES'
So I cant used a fixed race_id value, need to use the race_id > 1 to know whats the next race. But this raises another issue if I have this in the database:
car_id 1 race_id 1 b_car_won 'NO'
car_id 1 race_id 3 b_car_won 'YES'
car_id 1 race_id 4 b_car_won 'YES'
If I query I'd get 2 rows where race_id > 1. And I only need the first one, because 3 is the next race.
I need to fetch in a single row if possible, the result of the 1st race and the 2nd race. How can I do this?
table users have a clustered (PK) index on userid table pictures have a clustered (PK) index on userid
when I do this query:
"select userid from pictures where userid=123"
then It will do a clustered index seek
But If I do any of those:
"select t2.userid from users t1 left join t2 on t1.userid = t2.userid" or "select (select userid from pictures where usedid = t1.userid) from users t1"
It will do a clustered index scan.
How can I force it to seek my index instead of scan?
I have a T-SQL query that is used to pull up some data for once-a-day export, just out of curiosity more then anything, is there a way to make this shorter?SELECT DISTINCT u.userId,u.lastName,u.firstName,u.address1,u.address2,u.city,u.state,u.zip,CASE WHEN u.UserClassID_fk BETWEEN 1 AND 3 AND COALESCE(u.RetailerNumber_fk,0)= 0 THEN 'Corporate'WHEN u.UserClassID_fk BETWEEN 1 AND 3 AND COALESCE(u.RetailerNumber_fk,0)<> 0 THEN 'RETAILER'+ CONVERT(varchar, COALESCE(u.RetailerNumber_fk,0))WHEN u.UserClassID_fk BETWEEN 4 AND 8 AND COALESCE(p.plantCode,ap.plantNumber_fk,ps.plantNum ber_fk,0) = 0THEN 'Corporate'WHEN u.UserClassID_fk BETWEEN 4 AND 8 AND COALESCE(p.plantCode,ap.plantNumber_fk,ps.plantNum ber_fk,0) <> 0THEN 'PLANT'+ CONVERT(varchar, COALESCE(p.plantCode,ap.plantNumber_fk,ps.plantNum ber_fk,0))WHEN u.UserClassID_fk BETWEEN 9 AND 14 AND COALESCE(p.regionNumber_fk,rg.regionNumber,0) = 0THEN 'Corporate'WHEN u.UserClassID_fk BETWEEN 9 AND 14 AND COALESCE(p.regionNumber_fk,rg.regionNumber,0) <> 0THEN 'REGION'+ CONVERT(varchar, COALESCE(p.regionNumber_fk,rg.regionNumber,0))END CPGkeyFROM [...] JOIN [...]I'm hoping there is something in a way of....If userClass Between 1 and 3 ThenIF COALESCE(u.RetailerNumber_fk,0)= 0 Then 'Corporate'ELSE 'RETAILER'+ CONVERT(varchar, COALESCE(u.RetailerNumber_fk,0))End IF as CPGKey,Thanks in advace.
I need to restore a copy of database to a new db name
i'm trying by creating a new db and restoring by doing
RESTORE DATABASE [userr] FROM DISK = N'D:sqlbackupsuser.bak' WITH FILE = 4, NOUNLOAD, STATS = 10 GO
i'm getting an error
Msg 3154, Level 16, State 4, Line 1 The backup set holds a backup of a database other than the existing 'userr' database. Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally.
I thought this would be somewhat easy but I'm having trouble with this one. I have a statement that if 'ACTLABCOST' or 'ACTMATCOST' has a value of 0.00 then I need to make it .00.
If following code, it is ok if I execute part1 and q1 together. but if I try to execute Q2, I got error
Server: Msg 137, Level 15, State 2, Line 4 Must declare the variable '@str'.
I guess I have to execute part1 and Q2 at same time.
Is there a way to avoid that. I mean after I execute part1 @str will be kept in memory, and I can execut q2 without a problem? (like in SAS) Thank
/* Part1*/ /* how to make @str global*/ declare @str nvarchar(20); set @str='%subway%';
/*Q1*/ select *, case regionname when 'telesales' then 't' else 'o' end as rn from dbo.RPT_ContractDetails where businessname like @str
/* Q2*/ select contracttypename,regionname, count(*)as cou, sum(fundingamount)as Dollar from dbo.RPT_ContractDetails where businessname like @str group by contracttypename,regionname
Could someone tell me which collation I have to use for a text field with a unique index, but which should make the diffrence between Å“ and oe. (Latin1_General_CS_AS does not make a diffrence between them)
select contractnbr,affcontractnbr,tdd,affrtramount,affturn, pt=datediff(d,afffirstfundingdate,affRTRBalanceZeroDate),ratio=datediff(d,afffirstfundingdate,affRTRBalanceZeroDate)/afftrun from #targetfinishedaff
datediff(d,afffirstfundingdate,affRTRBalanceZeroDate) appears two times in this code, Is there a way to make it appear only once? Thx
IF OBJECT_ID(N'aquery') is not null DROP FUNCTION aquery GO
CREATE FUNCTION aquery() Returns nvarchar(500) as Begin Declare @var nvarchar(500); Set @var = 'Select Distinct Description from dbo.tblScanners'; Return @var end GO
exec sp_executesql aquery;
I created that code to prove if it works. But the result doesn´t appear, and the message is:
i was wondering if anyone could help me write all this into one or two quries...
alter table testdata add areacode varchar(3), countystate varchar(35), citystate varchar(30), county_name varchar(30), ltv float go
UPDATE t1 SET t1.county_name=t2.county FROM testdata t1 INNER JOIN master.dbo.zip t2 ON t1.statecode+t1.countycode=t2.fips go
update t1 set maritalstatus = case maritalstatus when '1' then 'M' when '2' then 'S' end, homeowner = case homeowner when '1' then 'R' when '2' then 'T' when '3' then '9' when '4' then 'H' end, areacode = substring(phone,1,3), citystate = rtrim(city)+' '+state_abbrv, countystate = rtrim(county_name)+' '+state_abbrv, ltv = case when estcurhomeval >0 then cast(oo_mtg_amnt as float)/cast(estcurhomeval as float) end from testdata t1 go
basically, i have to run this against some fairly large tables, so i want to try and get it down to one pass, instead of three.