Variations quit propagating

If variations quit working, the it could be the relationship list (hidden list in the root site) could be corrupt.
This could happen when you copy sites/pages from the target site back to the source site.

The easiest way to fix is run the variations editor.
http://www.thesug.org/blogs/lsuslinky/Lists/Posts/Post.aspx?List=ee6ea231%2D5770%2D4c2d%2Da99c%2Dc7c6e5fec1a7&ID=21

You have to run the tool on the front end server (just on one of them if you have multiple, SharePoint will propagate the changes to any other front end servers).  You just download the zip file and extract the files to a folder, it doesn't install anything there is just a .exe (SharePoint Variations Editor.exe) file to run.

You have to enter the url for your site (ex, http://www.blah.com/en/pages/home.aspx), then click the scan button (next the text box you entered the url, looks kind of like a site icon).

It will scan all your sites (progress bar (with % complete) at the bottom) and show your site structure.

The very last 2 nodes will include any warnings or errors.

For each error on a page, select the page, check the check box, then click green button in the toolbar.

For each error on a site, you will need to look up that site's group in the hidden relationship list (http://demo/Relationships%20List/AllItems.aspx).  Look for that site in a different variation and get the group id from that site.  You will have to rescan after making these changes.

After that propagation will continue to work and any page not propagated will be propagated to the target sites.

 

This blog summarizes a couple of other blogs I learned from (I want to give credit where credit is due.)
http://stsadm.blogspot.com/2008/04/fun-with-variations.html

http://www.thesug.org/blogs/lsuslinky/Lists/Posts/Post.aspx?List=ee6ea231%2D5770%2D4c2d%2Da99c%2Dc7c6e5fec1a7&ID=21

Search across all fields in all tables in SQL server

I found this script that allows you to search across all fields in all tables of a database for a specific string. It’s helpful when you trying to where data might be stored in a strange/large/new database that you are not intimately familiar with. Being a consultant I have found myself digging though a clients database many times trying to figure how the data is stored and this has saved me from looking in every table manually. I did not come up with this code myself, but I didn’t save the link of the blog where I found it. So unfortunately I can’t give credit to the smart person who came up with it. To use it just set the value of @SearchStr (highlighted in red) to the string you wish to search for.
CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
DECLARE @SearchStr nvarchar(100)
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET @TableName = ''
SET @SearchStr = 'string to search for' 
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped'
) = 0
)
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
)
END
END
END
SELECT ColumnName, ColumnValue FROM #Results
DROP TABLE #Results
Technorati Tags: ,,

SharePoint performance tips

I attended the SharePoint Saturday today and attended a session on SharePoint optimal performance by Eric Shupps.  Here are a few of the tips I learned today.

Have a separate server (not available to users) to host search indexes.

Change the default SQL growth from 1 mb, 10% to 100 mb, 250%.

Isolate the SharePoint DB, do not put any other databases on the same server as the SharePoint DB.

Create custom scopes with unique crawl schedules. If you have a specific site that needs to crawled more often than the other sites

Enable manual compression on IIS 6/7.  You will need to balance between compression and cpu benefits (Compression increases CPU utilization on WFE's).

Only things in the 12 hive can be compressed, things out of the database are not

Windows 2008 does dynamic compression out of the box
Windows 2003 can turn on dynamic compression, but has limited improvement

MOSS does caching right out of the box, wss does not
MOSS caches Pages, Objects, Disk (blob, ie documents)
Caching increases memory utilization

Check the object cache
100 MB is kind of small, maybe increase 250-500 MB

Setup cache profiles.
each site collection can be setup different
each zone can be setup different

BLOB caching does not work right before the infrastructure update

Check the output cache.
You can use the cache profiles you setup, which can be set for anonymous and/or windows auth.

For further reading:
check out SharePoint 2007 performance ad scalability white paper check out TechNet IIS performance tuning

Get Google results that matter

More than once I have searched for something on Google and gotten back too many results that don’t matter.  One of the problems with IT is that everything moves and improves quickly.  It’s such a pain when get results that over 2 years old and don’t matter because the technology has moved on.

Use the advanced search of Google to get results that are relevant.  You can tell Google what date range to use (how recent the page is), for example past week, past month, past year.  That way you will only get pages in the results that are from the your date range.  This helps when you’re working with bleeding edge technologies.

Optimize Firefox (speed it up)

For Firefox being such a good browser, I was surprised to find out to find out that Firefox can run faster.  There are some Firefox settings that can be adjusted to speed up your browsing experience.

Of course type about:config in the address to get to the Firefox settings. 

Change the following settings:
network.http.pipelining from false to true
network.http.pipelining.maxrequests from 4 to 15
network.http.proxy.pipelining from false to true

Then add a new entry nglayout.initialpaint.delay and set it’s value to 0.


This will speed up your Firefox browsing experience.

Show desktop icon missing from quick launch

Occasionally I end working on PC that is missing the show desktop icon.  I always end up looking for how to recreate it on Google. 

In Windows XP, go the run command then type the following command:

regsvr32 /n /i:u shell32.dll

Then press enter.  A dialog will let you know it was successful.
The show desktop won’t be there until you reboot or type the following command:

%appdata%\microsoft\internet explorer\quick launch

This will open a folder.  Then you can drag the show desktop icon to your quick launch bar (it will create a short cut in the folder that just opened up).


In Vista, go to howtogeek.com and download the file labeled “ShowDesktop.zip”.  Open that file and drag the file it contains to the quick launch bar.

What to do with User Account Control in Vista


Tired of Vista asking you if it’s okay to do anything, that’s the User Account Control (UAC).  You can turn it off or use free third party tools to adjust.

I choose to turn it off because it is too annoying.  Just go the control panel-> user accounts.  Then click Turn User Account Control on or off.  Click continue at the UAC prompt and on the next screen, uncheck the Use User Account Control (UAC) to help protect your computer.

That will turn off UAC and you won’t have to worry about it.

Excel 2007, determine count of rows in a spreadsheet

I had to determine how many rows are in a speadsheet with VBA.

Dim rowCount as Integer
rowCount = ActiveSheet.UsedRange.Rows.Count

Excel 2007, determine count of worksheets in a spreadsheet

 

If you need to know how many worksheets in a spreadsheet.

Dim sheetCounter as Integer
sheetCounter = ThisWorkbook.Worksheets.Count

Record count of all tables in a database

Here is a sql script that will give a count of all records in every table in your database. This comes from my friend David McCollough.
CREATE TABLE #sizes ([name] nvarchar(200), 
-- BOL says (20), but that obviously wrong
             [rowcount] varchar(25))
DECLARE @tablename VARCHAR (128)

DECLARE tables CURSOR FOR
   SELECT TABLE_NAME
   FROM INFORMATION_SCHEMA.TABLES
   WHERE TABLE_TYPE = 'BASE TABLE'
   order by TABLE_NAME

-- Open the cursor
OPEN tables

-- Loop through all the tables in the database
FETCH NEXT
   FROM tables
   INTO @tablename

WHILE @@FETCH_STATUS = 0
BEGIN
  --print 'Insert into #sizes Select ''' +  @tablename + ''' as [name] ,count(*) from ' + @tablename
  --exec ('Insert into #sizes Select ''' +  @tablename + ''' as [name] ,count(*) from ' + @tablename)
  --faster than select count(*)
  exec ('Insert into #sizes Select ''' +  @tablename + ''' as [name],(SELECT rows FROM sysindexes WHERE id = OBJECT_ID(''' +  @tablename + ''') AND indid < 2)')
FETCH NEXT
   FROM tables
   INTO @tablename
END

-- Close and deallocate the cursor
CLOSE tables
DEALLOCATE tables

select * from #sizes Order by [name]
drop table #sizes
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

Search for column name across all tables

 

Here is another sql script I got from my friend David McCollough that will allow you to search all tables for a specific field name.

Just set the @ColumnName variable and let ‘er rip.

 

DECLARE @ColumnName       varchar(1000)

SET @ColumnName = 'PlayerId'

    select o.name as TableName,
           c.name as [ColumnName]
      from sysobjects o 
inner join syscolumns c on c.id = o.id
      where o.type = 'u' and c.name = @ColumnName       
   Order by TableName
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }
Technorati Tags:

No back button

If your web app just can't tolerate a user clicking the back button, you can tell the browser to not cache the page. Most of the time it will listen if you use this code, which covers all the bases:

Response.Expires = 60
Response.ExpiresAbsolute = DateAdd(DateInterval.Day, -1, Now())
Response.AddHeader("pragma", "no-cache")
Response.AddHeader("cache-control", "private")
Response.CacheControl = "no-cache"

JS to tell if an object is viewable on the screen

 
Here is some JavaScript that has a function to tell if an object 
is viewable on the screen.
This is quite helpful if you have something on the screen you 
want to make sure the user sees,

like a an error or license agreement, etc.
 
<HTML>
<HEAD>
<SCRIPT>
function isinView(oObject)
{
    var oParent = oObject.offsetParent;
    var iOffsetTop = oObject.offsetTop;
    var iClientHeight = oParent.clientHeight;
    if (iOffsetTop > iClientHeight) {
        alert("Special Text not in view. Expand Window to put Text in View.");
    }
    else{
         alert("Special Text in View!");
    }
}
</SCRIPT>
</HEAD>
<BODY onload="window.resizeTo(430,250)" onclick="isinView(oID_1)"  SCROLL=NO>

<DIV STYLE="position:absolute;left:20px">Click anywhere in window to see if special text is in
view.</DIV>

<DIV id="oID_1" STYLE="position:absolute; left:50px;top:300px;width:280px;color:lightGreen;
font-size:large;font-weight:bold;background-color:hotPink;font-family:Arial">
            Here's some special text
</DIV>
</BODY>
</HTML>
Technorati Tags: ,

Dynamic searches without dynamic sql

Search functionality is a feature that comes up with many applications. I have written more than one search stored procedure (and screen), but I usually ended up with writing dynamic sql (building a SQL statement and using the exec command, see Figure 1 below). The main disadvantage to dynamic sql statements is that they are not compiled and performance always matters. I was reading CoDe magazine one day and noticed a part of an article that mentioned dynamic sql without dynamic sql. I read it and was quite pleased with the approach. So the basic approach is to have all the lookup parameters as optional parameters, set null parameters to the % wildcard, use a series of like statements in the where clause. See figure 2 for an example of the sql code. Figure 1
Create Procedure Search
    @ProductName VarChar(100)
AS

Declare @SQL VarChar(1000)

Select @SQL = 'SELECT * FROM Products '
Select @SQL = @SQL + 'WHERE ProductID in (' + @ProductName +')'

Exec ( @SQL)
 
Figure 2
Create Procedure Search
@ProductName varchar(100) = null
As
Set @ProductName = isnull(@ProductNmae, '%')

Select * from Products
where ProductName like @ProductName

Sql Server Keyword search across Stored Procedures, Functions, Triggers

Here is some T-SQL I got from a friend of mine (David Mccoullgh). Just set the @SearchPhrase to search across stored proc, functions, triggers to see where that string is in use. Very helpful if you are changing a field name and want to know where it is in use.
DECLARE @SearchPhrase varchar(1000)

SET @SearchPhrase = 'PlayerBonus'

SELECT DISTINCT sysobjects.name AS [Object Name],
                case
     when sysobjects.xtype = 'P' then 'Stored Proc'
                    when sysobjects.xtype = 'TF' then 'Function'
                    when sysobjects.xtype = 'TR' then 'Trigger'
                end as [Object Type],
                (SELECT ParentTable.[Name]
                   FROM sysobjects ParentTable
                  WHERE ParentTable.id = sysobjects.Parent_obj) ParentTable
           FROM sysobjects, syscomments
          WHERE sysobjects.id = syscomments.id
            AND sysobjects.type in ('P','TF','TR')
            AND sysobjects.category = 0
            AND CHARINDEX(@SearchPhrase, syscomments.text) > 0

VS copy instead of paste problem

So in Visual Studio when accidently copy (ctrl-c) instead of paste (ctrl-v) you lose what was on your clipboard.

Quite annoying behavior, but you can fix it. 

Tools-> Options –> check Show All Settings –> expand the Text Editor node –> select All Languages –> under Settings –> clear the Apply cut or copy commands when there is no selection.

This will change the behavior in visual studio to work like word when it comes to copy and paste.

image

 

 

This is a tip I read about in the Code magazine for Jan/Feb 2009.

Technorati Tags: ,,

What's new in SQL 2008

I talk about SQL server every chance I get because of some the great features available (SSRS, SSIS, SSAS).  So I looked into SQL 2008 the first chance I got.  More than once I have been asked about the new features of SQL server 2008.  So here is a list I complied (not 100% of the features, just the ones I thought they were easy to sell)

Top new features:

  1. T-SQL Intellisense – Intellisense is now available for T-SQL. This allows for easier and quicker development.
  2. Date/Time data types – There is a new data type for just the date and there is a new data type for just the time. There is no longer the need to program around a datetime data type.
  3. Encrypted Backups – Backups can be encrypted to prevent data disclosure or tampering.
  4. Transparent Data Encryption – The entire database can be encrypted by the SQL engine. This encrypts all database data and log files for a database log. All indexes and tables are encrypted. No changes to applications are required.
  5. Memory Management improvements in Reporting Services – Running large reports will no longer consume all available memory.

List of some of the new features

Security/Auditing
     - Transparent Data Encryption (encryption while data is 'still' on disk, transparent to applications)
     - External Key Management (Consolidation of key management, integration with external products)
     - Data Auditing (1st-class 'AUDIT' objects; DDL support; audit objects, principals, data, etc.; support for multiple logging targets)

Availability/Reliability
     - Pluggable CPU support
     - Enhanced Database Mirroring (compression of mirror streams, enhanced performance, automatic page-level repair for principal/mirror)

Performance
     - Data compression (easy to enable/disable online, more efficient data storage (this is NOT traditional data compression))
     - Backup stream compression (server level control or backup statement control, all backup types)
     - Performance data collection (single, common framework for data collection, reporting, and storage/warehousing)
     - Improved Plan Guide support (plan freezing, pull plans directly from plan cache, SSMS integration, etc.)
     - Resource Governor (create pools and groups to govern, define classifications based on built-in functions, segment resource utilization amoung groups)

Management
     - Policy-based management framework (manage via policies vs. scripts, enterprise-wide support, automated monitoring/enforcement, etc.)
     - Integrate with Microsoft System Center
     - Extended Events (high perf lightweight tracing infrastructure, NOT sql trace, integrated with ETW, unprecidented insight into goings-on)

Development Enhancements
     - Improved datetime datatypes (100th nanosecond precision (7 digits past second), time-zone datetime offset, date only, time only)
     - HierarchyID datatype (hierarchical-aware data type, ORDPath values, built-in functions, methods, etc.)
     - Entity Data Model support (develop 'business entities' vs. tables, model complex relationships, retrieve entities vs. rows/columns)
     - LINQ
     - Sql Server Change Tracking (Change Data Capture, get 'diff' data changes WITHOUT a comparible value (i.e. datetime, timestamp, etc.))
     - Table Valued Parameters
     - MERGE statement ('upsert' data, also includes deletion functionality)
     - Large UDT's (no more 8000 byte limit on CLR-based UDTs, no more 8000 byte limit for UDA's)
     - Spatial data (GEOMETRY and GEOGRAPHY data types, built-in spatial function support, spatial indexes)
     - XML enhancements (support for lax validation, office 12 support, xs:dateTime support, lists/union types, LET FLOWR support, etc.)
     - Inline initialization and compound assignment

  Service Broker
     - New UI and Tools for working with (add/drop/edit functionality within SSMS, Diag tools, )
     - Conversation Priority (set message ordering, send/receive impact, 1-10 levels)

Data Storage
     - Data compression (see above)
     - FILESTREAM attribute (get the 'best of both' functionality from BLOBs in the DB vs. BLOBs on filesystem, no more "to blob or not to blob")
     - Integrated Full Text Search (FTS fully integrated into DB engine, no external storage, no external service, more efficient and reliable costing)
     - Sparse columns (more efficient storage for 'wide' tables with many columns that repeat and don't contain data)
     - New index types (spatial indexes, hierarchical indexes, FILTERED indexes (indexes on filtered values within columns), etc.)

Data Warehousing/ETL
     - Partitioned Table Parallelism (no more thread limit per partition)
     - Star Join support (no special syntax, optimizer based, full backward syntax support)
     - Data compression (see above)
     - Resource Governor (see above)
     - Persistent Lookups in SSIS (no more re-querying for lookup operators, cache lookups in multiple ways, persist lookups to disk)
     - Improved thread scheduling in SSIS (shared thread pool, pipeline parallelism)
     - Change Data Capture (see above)
     - MERGE statement (see above, great uses with slowly changing dimensions)
     - Scale-out analysis services (read-only storage supports multiple AS servers)
     - Subspace computations
     - New Tools for Cube design
     - Best Practice Design Alerting
     - Backup cubes with better scalability
     - Data-mining add-ins for Excell

Reporting
     - IIS Agnostic Reporting Services Deployment (no IIS required to run RS any longer)
     - Rich-text support
     - Enhanced visualiztion (graphing)
     - New Word rendering (render reports to Microsoft Word)

Performance Point, can't move data from Staging to App DB

You go through all the effort of loading your Staging database and you click on the “Load this model from Staging Area”.  Then you check your application database and there is nothing there.  You check your staging database and there no errors (BizSystemFlag = 0).

So what’s the problem?  There are no errors in the database (or in the event log).

You have to update the BizSystemFlag = 200.  Now when you load the model from the staging area it will actually move the data.

SharePoint myths

I was catching up on some blog reading and I was reading Eric Shupps blog post about SharePoint myths and item 3 (SharePoint  is not suitable for large internet facing sites) really hit home for me.  In March a large internet facing web site (for an oil and gas company) that I worked on went live.  I just checked and the site 1.3 million (and change) pages views for March.  That’s the biggest site I have ever worked on and SharePoint handles it wonderfully.  So there is an example of that myth being debunked.

Dashboard Designer,what's my connection string again?

In the Performance Point Server 2007 Dashboard Designer, you create a data source using either a standard connection or with a connection string.  I use the connection string option myself, but I never remember the syntax of the connection string (to a AS cube).

So here how’s I get the connection string:

Open excel (I use 2007)
Go to the data tab
From Other sources
From Analysis Services
image
Put in your server name (I leave the default for Log on credentials) 
Choose next
Then choose what cube you want (if you have more than one cube) 
Click Next
Click Finish (if you already have a data source of that name already existing, then you will have a pop up asking if you want to continue, I choose yes)
Click properties
Click on the Definition Tab

Viola, there is the connection string to your cube.
Now you can copy and paste that back into Dashboard Designer.

Regular Expressions Tool

A co-worker of mine showed me Expresso, a regular expressions development tool.
If you need to create some regular expressions (which are a pain to create) from scratch expresso is the best tool.

Of course there is also http://regexlib.com/ if you want a great site to search for regular expressions.

Run Windows Server 2008 as a workstation

So if your tired of running Vista, you can run Windows 2008 as your workstation.  Windows 2008 runs much smoother than Vista.  I have run Windows 2008 as my main OS and I have enjoyed (until I tried Windows 7).  Here is link to using Windows 2008 Server as a workstation, http://www.win2008workstation.com/wordpress/.

I found this info in the Jan/Feb 2009 issue of Code magazine.

PerformancePoint 2007 Planning Server Roles

Here is an excerpt from the MS white paper on deployment of Performance Point Server 2007 on the server roles of PerformancePoint.

Here is the link to the document (which is a must read)
Deployment Guide for PerformancePoint Server 2007 (http://go.microsoft.com/fwlink/?LinkId=106633)

 

Using Planning Server roles

The security model for Planning Server is based on roles. Users are assigned to roles, and their permission levels in the Planning Server system are dictated by the roles to which they belong. The two types of roles are administrative roles and business roles.

Planning Server administrative roles

Planning Server includes four predefined administrative roles, which support the separation of responsibilities within an organization:

· Global Administrator

· Modeler

· Data Administrator

· User Administrator

Each role enables its members to perform a specific set of tasks within a specific scope. These roles are configured in the Planning Administration Console.

More information about administrative roles is available in the "Security and roles" section of the Planning Business Modeler online Help.

Scope of administrative roles

The Global Administrator role has a system-wide scope. The other administrative roles have either an application scope or a model-site scope.

At the application level, a user in the Modeler, Data Administrator, or User Administrator role has permissions for all model sites in the application.

At the model-site level, a user in the Modeler, Data Administrator, or User Administrator role has permissions only for the specific model site.

Each role enables its members to perform a specific set of tasks within a specific scope.

The following table provides a high-level description of the administrative roles. Users who belong to multiple administrative roles can perform all tasks that are associated with each role.

Role

Main tasks in Business Modeler

Scope

Global Administrator

Create and delete applications and model sites.

Note

To open a model site and use Planning Business Modeler, members of the Global Administrator role must also belong to another administrative role.

System

Modeler

Create and manage data and workflow processes.

Application or model site

Data Administrator

Create and manage data and workflow processes. Perform data integration tasks.

Application or model site

User Administrator

Manage users.

Application or model site

 

Global Administrator

A user who belongs to the Global Administrator role cannot connect to a server in Planning Business Modeler unless he or she also belongs to another administrative role. The only exception is to create the first application on Planning Server. A user who belongs only to the Global Administrator role can open Planning Business Modeler to create the first application.

Caution

Because of the potential for database errors when you use a multiple-server environment, we recommend that all Global Administrator tasks are performed in the Planning Administration Console.

Members of the Global Administrator role can perform the following tasks:

· Create or delete applications and model sites

· Add users to or remove users from the User Administrator role for the model site

Modeler

Typically, members of the Modeler role have both the technical and business expertise to perform modeling tasks. Members of the Modeler role can perform the following tasks in Planning Business Modeler within their scope (application or model site):

· Create, modify, or delete models, dimensions, and member sets.

· Deploy models and model sites.

· Create, modify, or delete assumptions.

· Create, modify, or delete cycles, workflow assignments, and calendars.

· Create, modify, or delete associations.

· Create, modify, delete, or run rules.

· Create, modify, delete, or run jobs. However, they cannot run Data Load, Data Export, or Data Movement jobs.

· Create, modify, or delete business roles within their scope. However, only members of the User Administrator role can manage role membership.

Users who are assigned to the Modeler role have unrestricted Read and Write access to all business data within their scope. This is true even if they belong to a business role that has restricted settings.

Data Administrator

Members of the Data Administrator role use Planning Business Modeler and the PerformancePoint Command Utility (ppscmd) as the primary tools for data integration tasks. Members of the Data Administrator role can perform the following tasks in addition to all Modeler role tasks:

· Run, synchronize, or load associations.

· Run Data Load, Data Export, or Data Movement jobs.

· Synchronize data to and load data from the application or staging database.

Planning Business Modeler uses the PerformancePoint Service Identity (SI) account to perform data integration tasks on a staging or application database. This account must have explicit permissions to the Microsoft SQL Server 2005 database.

Users who are assigned to the Data Administrator role have unrestricted Read and Write access to all business data within their scope. This is true even if they belong to a business role that has restricted settings.

User Administrator

Typically, members of the User Administrator role are executive administrators and business analysts. Members of the User Administrator role can do the following tasks in Planning Business Modeler:

· Assign users to and remove users from Data Administrator, Modeler, and User Administrator roles that have a model-site scope.

· Assign users to or remove users from business roles in the model site.

· Edit user permissions for a member set in the model site. This feature must first be enabled by a member of the Data Administrator or Modeler role.

Planning Server Business Roles

Business roles are defined for users who work with actual business data in PerformancePoint Add-in for Excel. Business roles are created and configured in Planning Business Modeler by members of the Data Administrator role or Modeler role. After business roles are created, users are then added to the business roles by members of the User Administrator role.

Complete information about business roles is available in "About user-defined business roles" in the Planning Business Modeler online Help.

PerformancePoint Excel Add-in prerequisites


So if you want to make sure your clients can use the Excel add-in.
Here are the prerequisites for the add-in (from the Deploying PerformancePoint white paper).

All client computers require the following software before PerformancePoint Add-in for Excel can be installed:

· Windows Vista, Windows XP with Service Pack 2, or Windows Server 2003 with Service Pack 1

· Microsoft Office Excel 2003 Service Pack 1 or Office Excel 2007

· Office Excel 2003 Primary Interop Assembly (.NET Programmability Support)

· The Microsoft .NET Framework version 2.0.50727.42 or later.

Note:
To enable Export to Excel functionality or Export to PowerPoint functionality in Microsoft Office PerformancePoint Server 2007, you must install the Microsoft .NET Framework version 2.0 on the computer where these commands are executed.

· Microsoft Core XML Services (MSXML) 6.0

Note:
Be sure that you have Microsoft Core XML Services (MSXML) 6.0 installed before installing OLE DB Provider for OLAP Services 9.0.

· Microsoft OLE DB Provider for OLAP Services 9.0 Service Pack 2

· Microsoft ADOMD.NET 9.0 Service Pack 2

PerformancePoint Planning Server 2007 hardware prerequisites


Here are the hardware prereq’s for Performance Point Server 2007.

Planning Server hardware prerequisites

The following table lists the minimum and recommended hardware requirements for clients and servers used by PerformancePoint Planning Server.

Hardware requirements

PerformancePoint Planning Servers

File share server

PerformancePoint Server Business Modeler

PerformancePoint Server Add-in for Excel

Processor type

Minimum: 1x Pentium 4

Recommended: 2x dual-core 64-bit CPUs

Minimum: 1x Pentium 4

Recommended: 2x dual-core 64-bit CPUs

Minimum: 1x Pentium 3

Recommended: 1x dual-core 32-bit CPU (x86)

Minimum: 1x Pentium 3 CPU

Recommended: 1x dual-core 32-bit CPU (x86)

Processor speed

Minimum: 2.5 GHz

Recommended: 2.8 GHz

Minimum: 2.5 GHz

Recommended: 2.8 GHz

Minimum: 1 GHz

Recommended: 2.5 GHz

Minimum: 1 GHz

Recommended: 2.5 GHz

Available hard disk space

Minimum: 1 GB

Recommended: 5 GB + 7200rpm hard disk drive

Minimum: 1 GB

Recommended: 5 GB + 7200rpm hard disk drive

Minimum: 512 MB

Recommended: 2 GB

Minimum: 512 MB

Recommended: 2 GB

RAM

Minimum: 2 GB

Recommended: 4 GB

Minimum: 2 GB

Recommended: 4 GB

Minimum: 1.5 GB

Recommended: 2 GB

Minimum: 1.5 GB

Recommended: 2 GB

Network interface

Minimum: 1000BASE-T

Minimum: 1000BASE-T

Minimum: 1000BASE-T

Minimum: 1000BASE-T

 

Delete a Performance Point 2007 Cycle

So I have been doing a PPS proof of concept and I have created cycles (I am not going to explain what a cycle is) that I no longer want (or need).  So I wanted to delete some cycles and found it not easy to figure out.

So here are the short instructions:
In the Workspace Browser, click Process Management, then select the cycle you want to delete.  In the cycle tasks pane, click Available Actions in the Select Action list, then select Close.  Then repeat and select Purge from the Select Action list.  After you click ok all the assignments and jobs are deleted. 

Now the problem is that the cycles are still there??? And you can no longer go to the Available Actions.

Here’s that one trick you have to remember, the Business Modeler has to be refreshed so click the refresh model site arrows icon (or press F5 or View->Refresh or close and reopen).

Yeah this took me a while to figure why the cycle still showed up after supposedly getting rid of them.  The moral of the story is always remember the Planning Business Modeler sometimes automatically and sometimes it doesn’t so ALAWYS click the refresh buttons.

Dashboard Designer can not connect to cube

When I tried connecting to my cube from Dashboard Designer, I got the wonderful error “The PerformancePoint Server could not connect to the specified data source. Verify that either the current user or application pool user has Read permissions to the the data source, depending on your security configuration.  Also verifty that all required connection information is provided and correct.”

This was caused by the application pool PPSMonitoringWebService running as the wrong account.  No matter what else you do you have to make sure that account has permissions to your database.

PPS 2007 Excel add-in Gotcha

If you are trying to create a form (allowing for data entry) with the PPS excel add-in, you must have a time member in the data period set for the cycle.  If you don’t, no data entry will be allowed.  So this means you have to have a time member for any form template you are creating.

Performance Point excel not updating problems

So I found out a few tips about the excel add-in for Performance Point Server 2007.

Item 1, do NOT change a form template if you have a cycle created using that form template.  You can not guarantee that users will get the correct version of the form template.

Item 2, cache not clearing.  If you are sure you are not getting the latest form template when you open an assignment you can open the performance point excel add-in and click the clear cache button.  That may not always work.  To get around that problem you can browse to the folder

C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\PerformancePoint\OfflineCache.

If you can’t find the folder under Administrator, check under the current user or all users.

CAVEAT:  Do not delete the OfflineCache folder.  Be sure you only delete the folder under the OfflineCache.  If you do delete the OfflineCache folder I can’t tell you how bad Performance Point will react.

Performance Point 2007, how to move a matrix

So you created an excel form on the Performance Point tab and you realized that put your matrix in the wrong cell (defaults to the cell you have clicked when click the add new matrix button).  How can you fix it (without deleting the matrix and starting over)?

You can move the matrix by changing it’s location.

Go to Reports –> Report properties 
image 

From there expand the workbook and sheet and click on the matrix name.

image

Scroll down to the bottom and the second to last property is the location.
You can change that to move the matrix to what ever cell you need.