Reporting Services Unicode Parameters Cause Performance Issues

When I create a report using string parameters,  reporting services sends the SQL to SQL Server with an N prefix on the string parameters.  This is the behavior even when the underlying data table has no unicode datatypes.  This causes SQL Server to do a scan instead of a seek on these queries.  Can this behavior be modified to send the parameters as non-unicode text?

Work around to overcome SSRS report performance due to UNICODE conversion issue:
I have used a new parameter (of type Internal) which collects/duplicates the original parameter values as comma separated in string.
In the report Dataset query, parse the comma separated string into  a list into a vairable table using XML trick.
Use the variable table in WHERE IN clause
Steps:
Create a new Internal parameter (call it InternalParameter1)
Under Default Values -> Specify values : Add Exp : =join( Parameters!OrigParameter1.Value,",")
Pass/Use the InternalParameter1 in your dataset query.
Example code
DECLARE @InternalParameter1 NVARCHAR(MAX)
SET @InternalParameter1 = '100167600,
100167601,
4302853605,
4030753556,
4026938411
--- Load comma separated string to a temp variable table ---
SET ARITHABORT ON
DECLARE @T1 AS TABLE (PARALIST VARCHAR(100))
INSERT @T1 SELECT Split.a.value('.', 'VARCHAR(100)') AS CVS FROM
( SELECT CAST ('<M>' + REPLACE(@InternalParameter1, ',', '</M><M>') + '</M>' AS XML) AS CVS ) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
--- Report Dataset query ---
SELECT CONTRACT_NO, report fields… FROM mytable
WHERE CONTRACT_NO IN (SELECT PARALIST FROM @T1) -- Use temp variable table in where clause
Mahesh

Similar Messages

  • WILL BIG INDEX WILL CAUSE PERFORMANCE ISSUE?

    In an index table, if there are a lot of insert then data will grow and/or if the index is
    huge then can it really cause performance issue?
    Is there a document in metalink that says if index is 50% of data then we have to rebuild it? What are the basis and threshold of rebuilding index?

    A big index by itself won't cause a performance issue. There are other circumstances you should consider for the index.
    First of all, which kind of index are you talking about, there are several kind of indexes in Oracle. On the other hand, assuming you are talking about a regular B*Tree index, you should consider factors such as selectivity and cardinality. If the indexed column has evenly distributed values, then the index will be highly selective, and if the indexed column is highly skewed, in order for the index not to become a real bottleneck you should gather histograms, so selectivity can be calculated at execution time and in case the query retrieves a highly selective data range the index won't slow performance, otherwise a full table scan will be considered a best data access path.
    Rebuilding indexes is an operation performed when the index becomes invalid, or when migrating the index to a new tablespace, but not when you suspect the index has become 'fragmented' in this case you should use the Coalesce command. Oracle provides efficient algorithms to maintain the index balanced.
    ~ Madrid
    http://hrivera99.blogspot.com/

  • Reporting Services Cube Parameters not generated automatically

    Hi, I have a few reports which display data from an Analysis Services cube.
    For example my report uses Dateset1 as the source of the report.
    When I modify Dataset1 by adding a new parameters in the Query Designer, a new (hidden) dataset is created called:  CustomerAgeCustomerAge.
    But a new parameter on the report is not automatically generated. In the Dataset1 - Dataset Properties \ Parameters there is an entry for the parameter which should be created e.g. [@CustomerAgeCustomerAge]. I can work around this but I'd like to find the
    cause. Is there a max number of parameters which are generated automatically - my report has 12.

    Hi darkdusky,
    Based on my understanding, when you add a new parameter in dataset query, the parameter doesn’t generate automatically in report parameters.
    In Reporting Service, when we define a dataset query that contains a query variable, the query command is parsed. For each query variable, a corresponding dataset parameter and report parameter are created automatically. As we tested in our environment,
    even we create thirteen parameters in data set query, corresponding parameters automatically appear both in report parameters and dataset parameters in dataset properties.
    So in your scenario, I would like to know how about your query with those parameters. If possible, please provide some screenshots of results before and after you add a new parameter in dataset query.
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu

  • Oracle CPU Jan 2009 cause performance issue

    I did installed Oracle CPU Jan 2009 on HP-UX machine. But once the installation is completed, users complaint saying that it takes more than 1 minutes to open a new ticket on that application. With this, it cause a backlog processess increase tremendously.
    Will the CPU Jan 2009 patch cause any of the network performance issue:
    Server: HP-UX Itanium 64 bit
    Database: Oracle 10.2.0.3.0
    Instances: 2 instances running on this server.
    Edited by: user3858134 on Oct 26, 2009 9:30 PM

    I believe the latest CPU Patch for Oracle 10.2.0.3 on HP is CPU Jan 2009 only.Don't you think your database should be on 10.2.0.4?
    Anyways, do you have any benchmark statspack/AWR report? Can you compare that with the latest one? Do you see any difference?
    Regards,
    S.K.

  • SharePoint Reporting Services Integration - System Settings Page Issue

    Hi All,
    A client of mine has setup Reporting Services (SQL Server 2012 SP1) integration on a SharePoint 2010 environment and this has been working fine for a while now. This includes viewing SSRS reports and also creating PowerView reports from the SharePoint interface.
    The only issue that we have is when we browse to the SQL Reporting Services service application via SharePoint Central Administration and select 'System Settings' we receive an error and can't configure any of the settings located on this page.
    Looking at the ULS logs I can see the following error is raised:
    System.NullReferenceException: Object reference not set to an instance of an object.    at Microsoft.ReportingServices.SharePoint.SharedService.UI.ReportingServicesSystemSettings.InitStrings()     at Microsoft.ReportingServices.SharePoint.SharedService.UI.ReportingServicesSystemSettings.OnInit(EventArgs
    e)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    43aaadcd-fc67-420e-a30f-2e174f151084
    I removed the existing service application and uninstalled the SharePoint Services (using Install-SPRSService). I then reconfigured the RS services and created a new service application but the error is still raised. All other pages under the service application
    can be loaded. We also tried setting the reporting services diagnostic logs to verbose but couldn't see any further information.
    Has anybody seen this before? I'm thinking that perhaps some of the configuration settings for this page actually carry a null value when it should be configured with something. Does anybody know where these settings are saved?
    Cheers,
    Tom

    Just thought I'd provide an update, we ended up resolving this, problem was related to an incorrect ID one one of the fields in ReportingServicesSystemSettings.aspx.
    Updating this to the correct ID resolved the issue. Weird thing was that the file was incorrect on more than one server, only had to obviously update it on the CA server though. After this the System Settings page opened without any problems.

  • SetAttribute causing performance issue.

    Hi ,
    I am using 11.1.1.4.0
    Code:::
            DCIteratorBinding itr=ADFUtil.findIterator(iterator);
            RowSetIterator rsi=itr.getRowSetIterator();
            Row currRow=rsi.getCurrentRow();
            currRow.setAttribute(id,null);
    If i call setAttribute multiple times(like 10-20 times) ,it causes severe performance issue .
    Is there any reason for it ??
    Should we avoid using setAttribute() ??If so then what we should use?
    Any help is appreciated .
    Thanks
    Sazz

    usecase is user wld see a existing vacancy record and able to update it.
    GEVacancyFromNotificationVO1()  is a query based vo and  getGETranVacancyVO1() is a updatable VO . Now using view criretia i am pulling the record in the updatable VO , this will have only 1 record at 1 time.
    GEVacancyFromNotificationVO1() gets the details and set then in attributes of the updatable VO as this VO includes many trasient attributes which are required in my jsff . Basicallly this data are not saved in DB but required to show in the UI.
    Anyways now the thing is setAttribute as called 20-30 times you see , the performance is slow and sometimes data is not set as well.
    I used attributeListImp class to create a name value pair and create a new row for this VO using createAndInitRow() and that works super fast . That is requied for another use case and works perfectly ok . Only when i want to update a existing record i have to update the same row. cant create another row, so facing this performance issue and sometime data doesnt set properly . i get null in DCiterator binding when i fetch the data in bean class.
    So my question is why does setAttribute of AttributeListImpl is much much faster than setAttribute of Row class.??
    public void initializeFromNotification(String role, String emp) {
            ViewObjectImpl notifyVO = this.getGEVacancyFromNotificationVO1();
            ViewObjectImpl transVO = this.getGETranVacancyVO1();
            ViewObjectImpl geLoginPersonIdVO = this.getGELoginPersonIdVO1();
            ViewObjectImpl autoPopulatevo =
                this.getGEAutopopulateHireSysforCopyVacanciesVO1();
            ViewObjectImpl geNextApproverVO = this.getGENextApproverVO1();
            ViewObjectImpl transHireVo = getGEHireSystemReqTeamTransVO1();
            ViewObjectImpl gejobdesc = getGEJobDescTransVO1();
            Row row = notifyVO.first();
            if (row != null) {
                //query the trx table
                transVO.setApplyViewCriteriaName("VacancyNumberVC");
                transVO.setNamedWhereClauseParam("p_vac_num",
                                                 row.getAttribute("VacancyNumber"));
                transVO.executeQuery();
                if (transVO.first() == null) {
                    return;
                } else {
                    transVO.setCurrentRow(transVO.first());
                Row currentRow = transVO.getCurrentRow();
                List<String> transColumns =
                    Arrays.asList(currentRow.getAttributeNames());
                //setting values from notification vo to transvacancy VO
                String arr[] = row.getAttributeNames();
                if (null != transVO.getCurrentRow()) {
                    // AttributeListImpl attrList = new AttributeListImpl();
                    for (String attr : arr) {
                        if (row.getAttribute(attr) != null) {
                            if (attr.equalsIgnoreCase("VacTrxId")) {
                            } else if (transColumns.contains(attr)) {
                                if (currentRow.getAttribute(attr) == null) {
                                    currentRow.setAttribute(attr,
                                                            row.getAttribute(attr).toString());
                if (role != null && role.startsWith("ORG_MGR")) {
                    transVO.getCurrentRow().setAttribute("userRole",
                                                         "INITIATOR_HM");
                    transVO.getCurrentRow().setAttribute("userRoleDisplay",
                                                         "Hiring Manager");
                } else if (role != null && role.startsWith("HRM")) {
                    transVO.getCurrentRow().setAttribute("userRole",
                                                         "INITIATOR_HRM");
                    transVO.getCurrentRow().setAttribute("userRoleDisplay",
                                                         "HR Manager");
                } else {
                    transVO.getCurrentRow().setAttribute("userRole",
                                                         "INITIATOR_RFO");
                    transVO.getCurrentRow().setAttribute("userRoleDisplay", "RFO");
                transVO.getCurrentRow().setAttribute("EmpNumber", emp);
                geLoginPersonIdVO.setNamedWhereClauseParam("sso", emp);
                geLoginPersonIdVO.executeQuery();
                transVO.getCurrentRow().setAttribute("userPersonId",
                                                     geLoginPersonIdVO.first().getAttribute(0));

  • WEBUTIL - Does adding it to all forms cause performance issues?

    If I add the webutil library and object library to all forms in the system (as part of a standard template) despite the fact most won't use it, will this cause any performance issues???
    Thanks in advance...

    The webutil user guide has a chapter on performance considerations. Have you looked at that?
    The number one point from that chapter is:
    1. Only WebUtil Enable Forms that actually need the functionality. Each form that is WebUtil enabled will generate a certain amount of network traffic and memory
    usage simply to instantiate the utility, even if you don’t use any WebUtil
    functionality.

  • Reporting Services 2012 Item-level permissions issue

    Hello,
    We have a SQL Reporting services 2012 Scale-Out solution that uses a remote report SQL 2008 R2 database. The report server is used for reports consolidation - different teams within the company have different folders to which they have access and can upload
    reports, create/change data sources, etc within their folders. Let's say I create a team folder called Finance beneath the root folder. Only admins have Content manager role applied to the root folder and system admin as a system role to the Report server.
    I grant Content manager role for the Finance folder to DOMAIN\Finance team, the users are able to create a data source, however they cannot access it or view its properties afterwards. Why is this happening? When I grant DOMAIN\Finance team the Browser role
    to the root folder, they are able to amend the data source in the Finance folder and view its properties, but they are also able to view the reports and folders in the root folder of the Report server and I do not want that. Is this a standard behaviour of
    SSRS? How can I fix it?
    Thanks in advance.

    Hello,
    Which folder did data sources stored ? the Data sources folder under the root folder on Report Manager or the Custom Finance folder which you had grant Content Manager role? How about grant only Browser role on the Finance folder to the specify team? Did
    you modify the task of the Content Manager and Browser role?
    By default, the Content Manager includes "Manage data sources" and "View data sources" task which means uses with this role can view and manage data sources, while Browser role did not include these tasks. You can check the  task of the Content Manager
    role by connect to Reporting Services with SQL Server Management Studio and check role under Security.
    Reference:Predefined Roles
    Regards,
    Fanny Liu
    Fanny Liu
    TechNet Community Support

  • MDX calculated measure causing performance issue

    The calculated measure below against all product members is causing the excel pivot table to hang indefinitely. Any help on how to optimize the query for better performance?
    SCOPE ([MEASURES].[DIDaysInMonth]);
    THIS = CASE WHEN [Measures].[MonthDifference] < 0 THEN 0
    WHEN [MEASURES].[MonthDifference] >= 0 AND ProjectedEnd > 0 THEN [MEASURES].[DaysRemainingInMonth]
    WHEN [MEASURES].[MonthDifference] = 0 AND ProjectedEnd < 0 THEN
    [Measures].[Ordered Cases] / (([Measures].[Forecasted Sales]-[Measures].[Cases])/[measures].[DaysRemainingInMonth])
    WHEN [MEASURES].[MonthDifference] >= 0 AND ([Time Monthly].[Time Monthly].CurrentMember.PrevMember,[MEASURES].[ProjectedEnd]) <= 0 THEN 0
    WHEN [MEASURES].[MonthDifference] > 0 AND ([Time Monthly].[Time Monthly].CurrentMember.PrevMember,[MEASURES].[ProjectedEnd]) > 0 THEN
    ([Time Monthly].[Time Monthly].CurrentMember.PrevMember,[MEASURES].[ProjectedEnd]) /
    ([Forecasted Sales] / [daysInMonth]) END;
    END SCOPE;
    BI Developer

    Hi Abioye,
    According to your description, you create a calculated measure which against all products  in your AS cube, now the performance is poor when using this calculated measure in EXCEL Pivot table, right? In this case, here are some links which describe
    tips about performance tuning in SSAS, plesae see:
    http://technet.microsoft.com/en-us/library/cc966527.aspx
    http://sqlmag.com/t-sql/top-9-analysis-services-tips
    Hope this helps.
    Regards,
    Charlie Liao
    TechNet Community Support

  • Changing the report Length/LINE-ZISE cause printing issues

    Hello,
    We have changed the LINE-SIZE from 225 to 250 for one of the Z-report. Now some of the printers are causing problem while printing the output. Issue is basically with old printers.
    Has any one faced some issues like this? advice.
    Thanks a lot.

    Hi
    I think the SAP Report support standard report length 255 you can define length of report between 1 to 255 that works fine with all kind of printer. But while printing kindly check the printer properties called page format there you can select your suitable page format than try to print it this will solved your proble.
    Regards,
    Hiren

  • 32 bit Agent causing performance issue on Win 64??

    My OS is Windows 2003 64 bit server.
    I am using Tomcat as my application server (version 6.0.20)
    Java home is set to jdk1.6.0_14 (32bit). My agent is built on a 32bit platform. [I use the agent to gather specific data for profiling on specific commands].
    Even if I simply enable the java_opts to load the agent, performance of my application slows down drastically. [Even if the agent does not do anything]. The same works fine when I run the agent on a 32bit machine.
    Is this a known issue? Are there any work around for the same?
    Any suggestions, help will be greatly appreciated.

    Do not cross-post.
    Closed.

  • Does CAST ( date as timestamp) causes performance issues

    Hi
    does casting from DATE to TIMESTAMP in a query or in a view causes the slow down of performance??
    Please guide...
    Thanks
    Rimpi

    Everything you do affect performance. How significantly is a question answered by testing not by asking questions on an OTN forum.
    Create a loop doing it 10,000 times and find out.
    And, in the future, always include your version number.

  • Changing the Database driver causing performance issue

    Hello Experts
    I am finding a strange issue where if I change the database to Oracle 11g ( you will find it if you click the database which you have created in physical layer) under Data Source definition the report takes a longer time to complete.
    Actually I have upgraded the 10g rpd and catlog to 11g but database under data source definition was still using - oracle 10gR1 ( i donno whether this is a driver or not) . Everthing was running perfectly fine until I change the database under data source definition to Oracle 11g , the report takes a longer time . Also I found that the query is changed when I changed the database under data source definition to 11g.
    Also to inform you that datawarehouse is Database 11g where the data lies.
    what is the significance of Data source definition as changing it is changing the whole query.
    Pls. help.

    Hello,
    Do you have the Full Oracle 11g DB Client installed on the same box where you are running your BI Server .? Also can you make sure you have copy of tnsnames.ora in following directories.
    1. C:\Middleware\Oracle_BI1 \network\admin directory
    2. C:\Middleware\oracle_common\network\admin
    Check if the SQL Features that the datasource has , sometimes when you disable SQL features the server could issue a less effcient query to the database.
    Thanks,
    -SVS

  • Sorting causing Performance issues

    Morning all,
    I have written a report based on a materialised view that returns 36,000 rows in about 10 seconds. As soon as I put a sort on just one of the fields, the performance degrades. I have tried sorting it after the results are returned and ogt fed of of waiting so have now written the report again with the sort included at the beginning.
    It has now been running for 30 minutes. If the query itself is exactly the same why is there such a hit on performance?
    Any help would be greatly appreciated! I am using Disco 10G Desktop
    Cheers
    Col

    Col.
    I'd check a couple of things at this point.
    a. first of all as you're checking a 'historic' view (I'm assuming this is an Oracle BIS view as I don't have access right now) that you might want to first be sure that it's being 'limited' by conditions correctly. I just looked at a Noetix HR help file - if you know Noetix you'll know what I mean - and although it's not what you're using directly, it has pertinent info on that basic set of tables. I can't paste what it says due to copyrights, etc. but essentially it mentions that there's a primary_flag, an assigment_current_flag and a current_employee_flag that you should make sure if the BIS view you're using let's you limit on. Additionally, it does say it returns records from multiple business groups so again, if your view has that column you might want to limit on that as well. That at least would make sure you're not returning multiple records for the same employee (and as many people do, just setting the tick mark in Disco to stop showing duplicate records!).
    b. The problem with having a calculation - I assume - calling a function is that it will do it for every row that fits the condition (ie: again why you want to make sure in a. above that you're getting the least number of records). Obviously I can't see the code of the function you're referring to - as I assume it's an in-house built function) but it could be written ... oh let's say ... not optimally!
    I know I recently read on this forum that there was someone - most likely Rod West as he's good in this area - who I thought talked about loading a function first? to maybe minimize, but you might want to search the forum.
    c. Only other idea I can think of that would definitely help - but may cross your DBA's happy state of mind - is to create a function that creates a table first and then your report runs against that table. I did this at one client - and again, I know Rod's talked about this on the forum as well - where the first worksheet in Discoverer was called something like: 'Create Information'. It had a simple condition and parameter that let the user either go ahead and hit the okay button to start the process, or to get out at that point. Once it was hit, it called a function that simple built an Oracle 'temp' table (ie: it was always there to report against but if wiped out would create and fill) with heavy processing data. The function could create the information you wanted to report against - and in your case in the sort order you would prefer - and in much quicker time that going through Disco record at a time. Once the process was finished - about 10 minutes - it would advise you in the worksheet by finishing.
    Then the 2nd./3rd., etc. worksheets were the actual, normal Disco reports retrieving and manipulating the data however wanted. As every worksheet was accessing this specific table, they screamed including sorting, etc.
    So ... if you can't get the GET_SIT_DATA function to be quicker and your data never comes back, this is another idea - but you may encur the wrath of the DBA (they don't like tables being built in PROD (but their own ... of course)).
    d. Of course, to check all this, I'd first turn delete the calculation call to the function GET_SIT_DATA, rerun the worksheet, sort and be sure this is the culprit.
    Russ

  • Digital Signatures causing performance issue

    I have created a form for a two-step process in which the first user will open, enter data, and submit the form for another user to approve.  The problem is that during the approver phase, they will digitally sign the form (there are two digital signature fields for each section of the form, the approver is required to sign at least once in order to submit) and then submit, but the process seems to lag for about 20-30 seconds after they click submit.
    I understand that the digital signatures may add to the size of the form overall, but is one or two signatures enough to cause a delay? 
    I have some javascript that I fire at the pre-submit event using AWS_Action to see what the user action is and if the user selects to submit then it will test to see if at least one signature field is signed and valid, if so then changes the signature field type to disabled (I have the signature fields become required type based on certain fields containg data) and submits the form.  Is it possible that this script could cause such a delay after the submit?  We aren't having any delays when the first user submits the form without digital signatures so I assume this is what is causing the problem.

    I expect that the lag may be related to the script you are executing, rather that specifically by the digital signature itself.  Are you able to test the form outside of the process to see if the lag remains?  Could you change the submit button to a mailto: uri and see how long it takes for the "pre-submit" code to execute?
    Regards
    Steve

Maybe you are looking for

  • From Windows to iOs ?

    Hi, I wanted to know , if i download Photoshop CC and lightroom for 12 dollars a month, and that i'm actually on windows. In 3 months, i'm going to buy an iMac , will i be able to use this Photoshop that i downloaded ? Like do i have to pay 24 dollar

  • How usable is it to implement big Matrices in PL/SQL?

    Hi there, I'm implementing neural network Algorithms with Gradient Descend Methods in PL/SQL. The time for running the Algorithm (Backpropagation of Error) is very large - I still did my best for more Efficiency. Now I'm thinking about implementing a

  • How do I create a Watermark?

    New to Aperture, how do I create a Watermark?

  • How to send docs via bluetooth from / to iPad?

    How to send quickly docs via bluetooth from / to iPad instead via itunes etc?

  • Problem configuring DSN file

    Hi guys. I need some advice on how to configure an .DSN file on a Windows95. I need to link MS Access on this win95 to a Oracle DB located on a remote machine. (MS Access) ---> (Remote machine OracleDB) Thanks. MYI null